【发布时间】:2014-06-28 07:38:14
【问题描述】:
为什么我会收到来自 Clang 的警告?对我来说,这似乎是对模板化常量的合理使用。
warning: variable 'M_PI<int>' has internal linkage but is not defined [-Wundefined-internal]
#include <iostream>
template <typename T>
constexpr T M_PI = T(3.1415926535897932);
template <typename T>
constexpr T CalcCircumference(T d)
{
return d * M_PI<T>;
}
int main()
{
std::cout << CalcCircumference(42.0f);
}
编辑:显然,一个简约的测试用例让一些人感到困惑。我稍微修饰了一下,希望能缓解这种情况。
【问题讨论】:
-
@hvd 此代码从 main 返回一个常量值,所以 course 毫无意义,但由于它看起来很简单,但它会生成一个警告,我想知道为什么。
标签: c++ templates clang compiler-warnings c++14