C++ 为什么使用C++;17`constexpr if`在MSVC上编译失败?
此代码无法在MSVC上编译,错误为C2065“'test':未声明的标识符”。 Clang编译时没有警告,GCC编译时使用C++ 为什么使用C++;17`constexpr if`在MSVC上编译失败?,c++,visual-c++,compiler-errors,language-lawyer,C++,Visual C++,Compiler Errors,Language Lawyer,此代码无法在MSVC上编译,错误为C2065“'test':未声明的标识符”。 Clang编译时没有警告,GCC编译时使用-Wall“警告:变量'test'设置但未使用[-Wunused但设置变量]”发出警告。 有关比较,请访问 模板 结构foo { constexpr自动运算符()()const { 如果constexpr(constexpr自动测试=真;测试) { 返回true; } 其他的 { 返回false; } } }; int main() { 福巴{}; bar(); 返回0; }
-Wall
“警告:变量'test'设置但未使用[-Wunused但设置变量]”发出警告。
有关比较,请访问
模板
结构foo
{
constexpr自动运算符()()const
{
如果constexpr(constexpr自动测试=真;测试)
{
返回true;
}
其他的
{
返回false;
}
}
};
int main()
{
福巴{};
bar();
返回0;
}
有很多方法可以使这个程序编译
foo周围的模板
constexpr
constexpr自动测试=true;
if constexpr(测试)
编译失败的原因是什么?这只是MSVC和GCC的一个bug MSVC已经有了一个解决方案 对于GCC,它可能与和有关