模板化的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编译,我不会得到错误(并得到正确的输出),

但是Intelclang给出了一个错误:

test.cpp(3): error: missing initializer for constexpr variable
  template<int N> inline constexpr float MyConst;
                         ^

-std=c++17(/std:c++17对于 MSVC)编译。

在 Godbolt 和我的本地机器上尝试了最新的编译器。

以上是模板化的constexpr变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>