我试图了解我所看到的是 MSVC 编译器错误还是我的误解。我正在尝试使用一个简单的编译时字符串文字模板参数,如下所示:
constexpr const char teststr[] = "teststr";
template <const char *N>
struct Test {
static constexpr const char *name = N;
};
using TEST = Test<teststr>;
但是,MSVC 报告 teststr
参数不是编译时表达式:error C2975: 'Test': 'N' 的无效模板参数,预期的编译时常量表达式
(在 using TEST
行)。
这是我的错误,还是编译器的错误?我使用的是 Visual Studio 2017 版本 15.1。
最佳答案
这是一个compiler bug .
此外,它是一个C++11 feature允许在模板参数中使用内部链接的对象地址,而不是 C++14。
关于c++ - constexpr 数组作为模板非类型参数的 MSVC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48159022/