【发布时间】:2018-09-21 07:07:31
【问题描述】:
我已经写了一个c++程序作为打击:
#include <iostream>
int main()
{
constexpr double a = 4.0;
constexpr double b = sqrt(a);
std::cout << b << std::endl;
return 0;
}
当我尝试使用 Visual Studio 2017 编译此代码时,我收到一条错误消息,指出函数调用必须在常量表达式中具有常量值。坏行是“constexpr double b = sqrt(a);”。
但是当我用g++编译同样的代码时,没有报错。
错误的原因是什么? g++和vc++有什么区别?
【问题讨论】:
-
也许是这个。 VS 并未声称正确支持
constexprmsdn.microsoft.com/en-us/library/hh567368.aspx。 -
你在叫什么
sqrt?std::sqrt似乎不需要成为constexpr函数。
标签: c++ visual-c++