在我的c ++书中,这是写的,第二个new_sz()
上有一个错误:函数调用必须在常量表达式中有一个常量值。
constexpr int new_sz(){return 42;}
constexpr int foo=new_sz(); //ok:foo is a constant expression.
但是当它是:
constexpr int new_sz(){return 42;}
const int foo=new_sz();
没有错误。我想知道的是constexpr
与const
有何不同?如果是的话:我该如何处理这个错误?
在我的书中说:在这里我们将new_sz
定义为constexpr
。编译器可以验证编译时间_对new_sz
的调用返回一个常量表达式,因此我们可以使用{{1}初始化我们的constexpre变量foo。
但是仍有一个错误,尽管在书中它是对的。