【发布时间】:2020-02-13 13:01:03
【问题描述】:
我正在使用带有/std:c++17 的 MSVC v141 进行编译。
constexpr const char* test(const char* foo) {
return foo + 1;
}
constexpr const char* bc = test("abc");
编译得很好,而
constexpr const char* test(const char* foo) {
constexpr auto bar = foo;
return bar + 1;
}
constexpr const char* bc = test("abc");
失败:
错误 C2131:表达式未计算为常量
失败是由于读取了超出其生命周期的变量
注意:查看 'foo' 的用法
这是正确的行为还是 MSVC 中的错误?
【问题讨论】:
-
我正在尝试查找是否允许在 constexpr 函数中声明变量。那里有一些限制。