复制constexpr函数参数的constexpr副本会导致编译器错误

时间:2019-01-02 18:27:05

标签: c++ c++17 constexpr

给出以下代码:

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

0 个答案:

没有答案