我有以下代码
constexpr int into(int a,int b)
{
int c=a*b;
return c;
}
int main()
{
constexpr int &n=into(5,5);
}
我阅读了MSDN的资料,constexpr
这个关键字是在C++11中引入的,在C++14中得到了改进。它表示常量表达式。与const
类似,可以应用于变量,以便在任何代码尝试修改该值时引发编译器错误。
在我阅读完之后,我认为constexpr
可以取代const
,但在上述代码中,我却得到了一个编译器错误:
`int main()':
invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int'`
当将 constexpr
替换为 const
时,它可以正常工作。我不理解这种行为;有人可以解释一下吗?
constexpr
引用必须绑定到全局变量。请参见此处的答案。 - wallyinto
的返回值没有被保存在任何地方,但是您确实保存了对该返回值的引用,那么这个引用必须指向哪里呢? - Oebele