3

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
4

2 回答 2

3

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

于 2013-11-12T23:26:42.500 回答
0

根据草案,用法将是pi<TYPE>,但这可能会随着时间的推移而改变。仅pi使用编译器可能无法推断出类型,pi就像编写这样的函数:template <class T> void foo();并像这样使用:foo()

对于默认参数,它的行为应该就像一个函数,所以它应该是pi;

于 2013-11-11T17:10:13.550 回答