MSVC 错误,将 constexpr 数组作为模板非类型参数
MSVC error with constexpr array as template non-type parameter
我试图了解我所看到的是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': invalid template argument for 'N', expected compile-time constant expression
(在using TEST
行上(。
这是我的错误,还是编译器错误?我使用的是Visual Studio 2017版本15.1。
这是一个编译器错误。
此外,它是一个 C++11 功能,允许在模板参数中具有内部链接的对象地址,而不是 C++14。
名称是静态的很重要吗?
这是使用 MSVC 2015 编译的:
char teststr[] = "teststr";
template <const char *N>
struct Test
{
const char *name = N;
};
using TEST = Test<teststr>;
相关文章:
- 在c++中为double类型的数组创建一个unique_ptr
- C++ 将 CIN 值存储到任何类型的数组中
- 如何将文本文件的特定行读取到 int 类型的数组中C++?
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- C++ - 将结构类型的数组传递给用户定义的函数
- 是否可以创建一个用户定义的文本,将字符串文本转换为 own 类型的数组?
- 在C++如何从数组中提取成员并返回成员类型的数组?
- C++中的集合(异构类型的数组)
- 将基本类型数组中的内存重新用于不同(但仍然是基本)类型的数组合法吗
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- 分配具有主参数类型的数组时出现问题
- C++ 参数堆与堆栈,基元类型的数组
- 估计函数参数数组的维度
- C++:灵活且能够存储多种数据类型的数组
- C 使用单个函数对具有多种值类型的数组排序
- 访问用户定义类型的数组的特定属性
- 有没有办法比较用 int 初始化的 char 类型的数组的 2 个元素
- 温度参数数组的内存泄漏
- 为什么C CHAR数据类型3D数组通过参数第一个括号为空白