我写了一个 C++ 程序作为打击:
#include <iostream>
int main()
{
constexpr double a = 4.0;
constexpr double b = sqrt(a);
std::cout << b << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 Visual Studio 2017 编译此代码时,我收到一条错误消息,指出函数调用必须在常量表达式中具有常量值。不好的一行是“constexpr double b = sqrt(a);”。
但是当我用g++编译同样的代码时,没有报错。
错误的原因是什么?g++ 和 vc++ 有什么区别?
sqrt不是constexpr函数,因此不能在constexpr表达式中使用。GCC 似乎有一个特殊的内置版本,它sqrt是constexpr. Clang 也不允许使用以下代码:
| 归档时间: |
|
| 查看次数: |
2730 次 |
| 最近记录: |