带有默认模板参数的C ++ 14变量模板?

时间:2013-11-11 17:04:57

标签: c++ templates variables c++14

C ++ 14将允许变量模板:

template <typename T> constexpr T pi = T(3.1415926535897932385);

现在考虑以下情况:

template <typename T = double> constexpr T pi = T(3.1415926535897932385);

问题:如何使用默认参数获取pi

pi; // Option 1 (I hope...)
pi<>; // Option 2

2 个答案:

答案 0 :(得分:3)

基于n3651我会说pi<>;。在当前的标准模板参数推导中,能够做pi的一种形式,仅适用于函数。由于该论文完全没有提及TAD,因此不太可能使用它。

答案 1 :(得分:0)

根据this草稿,使用情况将为pi<TYPE>,但这可能会及时更改。仅使用pi,编译器可能无法推断pi的类型,就像编写如下函数一样:template <class T> void foo();并使用如下:foo()

对于默认参数,它应该像函数一样运行,因此它应该是pi;