Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不带参数的constexpr函数_C++_C++11_Constexpr - Fatal编程技术网

C++ 不带参数的constexpr函数

C++ 不带参数的constexpr函数,c++,c++11,constexpr,C++,C++11,Constexpr,我对这个片段感到困惑: constexpr int f(bool b) { return b ? throw 0 : 0; } constexpr int f() { return f(true); } 直接从。 我感到困惑的一点是,为什么标准将没有参数的constexpr函数的情况定义为格式错误(在同一链接中说明)。 有人可以澄清一下吗?关键是“如果不存在参数值,那么函数或构造函数的调用可能是核心常量表达式的求值子表达式”。它不是关于函数f()不带参数;这是因为没有一组参数可以让它返回一

我对这个片段感到困惑:

constexpr int f(bool b) {
  return b ? throw 0 : 0; }
constexpr int f() { return f(true); }
直接从。 我感到困惑的一点是,为什么标准将没有参数的
constexpr
函数的情况定义为格式错误(在同一链接中说明)。 有人可以澄清一下吗?

关键是“如果不存在参数值,那么函数或构造函数的调用可能是核心常量表达式的求值子表达式”。它不是关于函数
f()
不带参数;这是因为没有一组参数可以让它返回一个可用值——它总是调用
f(true)
,这会引发异常

重新迭代:一个没有参数的
constexpr
函数肯定是格式良好的。但就给定的例子而言,情况并非如此

同样值得注意的是“不需要诊断”。这意味着编译器可以自由地接受构造。事实上,GCC毫无怨言地编译了您问题中的示例