【发布时间】:2018-02-23 21:23:26
【问题描述】:
c++14 介绍了variable templates 所以我可以这样做:
template <typename T>
const auto PI = std::acos(static_cast<T>(-1));
现在,当使用这个变量时,可以推断出类型吗?例如:
const auto TWO_PI = 2.0F * PI;
在这里,我希望PI<float> 似乎编译器应该能够推断出这一点。为什么编译器不会为我选择这个?
【问题讨论】:
-
为什么要扣浮动?
-
不知道为什么你认为 PI 应该是浮动的。
-
@Jarod42 因为它乘以
float? -
所以编译器应该随机查看子表达式并在可能的情况下选择 something 吗?这种有用的行为怎么样?
-
好吧,那又怎样?即使我采取您的思路(我仍然不确定编译器如何推断类型),仍然可以将浮点数乘以多种不同的类型。为什么要挑出浮动?然而,这一切都很奇怪。模板变量的模板参数与变量类型之间的所谓关系仍然超出我的理解。
标签: c++14 c++ templates c++14 type-deduction variable-templates