标签: 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
pi; // Option 1 (I hope...) pi<>; // Option 2
答案 0 :(得分:3)
基于n3651我会说pi<>;。在当前的标准模板参数推导中,能够做pi的一种形式,仅适用于函数。由于该论文完全没有提及TAD,因此不太可能使用它。
pi<>;
答案 1 :(得分:0)
根据this草稿,使用情况将为pi<TYPE>,但这可能会及时更改。仅使用pi,编译器可能无法推断pi的类型,就像编写如下函数一样:template <class T> void foo();并使用如下:foo()
pi<TYPE>
template <class T> void foo();
foo()
对于默认参数,它应该像函数一样运行,因此它应该是pi;
pi;