模板化的constexpr变量
我想确认这段代码是合法的(或不合法的?)C++17。
#include <iostream>
template<int N> inline constexpr float MyConst;
template<> inline constexpr float MyConst<1> = 1.1f;
template<> inline constexpr float MyConst<2> = 2.2f;
int main ()
{
std::cout << MyConst<1> << 'n';
return 0;
}
如果由g++和MSVC编译,我不会得到错误(并得到正确的输出),
但是Intel和clang给出了一个错误:
test.cpp(3): error: missing initializer for constexpr variable
template<int N> inline constexpr float MyConst;
^
用-std=c++17(/std:c++17对于 MSVC)编译。
在 Godbolt 和我的本地机器上尝试了最新的编译器。