给出以下代码:
constexpr int copy_int( int n )
{
constexpr int result = n;
return result;
}
int main( int, char** )
{
constexpr int x = 10;
constexpr int y = copy_int( x );
return 0;
}
g ++失败并显示:
main.cpp:3:27: error: ‘n’ is not a constant expression
constexpr int result = n;
^
但是,如果我更改copy_int
的实现以从constexpr
的声明中删除result
限定词,它将成功编译:
constexpr int copy_int( int n )
{
int result = n;
return result;
}
为什么要删除constexpr
?