为什么我从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返回一个常量值,所以*当然*它毫无意义,但由于它看起来很简单并且它会生成一个警告并且我想知道为什么会变得毫无意义。 –