int foo(int arg1, int arg2 = arg1)
{
std::cout << arg2;
}
为什么c ++标准不允许这个默认参数初始化王?
答案 0 :(得分:4)
不同寻常的是,这是标准确实提供理由的一个案例(虽然不是特别引人注目的):
C ++ 11 8.3.6 / 9未指定函数参数的评估顺序。因此,函数的参数不应在默认参数中使用,即使它们未被评估。
这不是一个特别艰巨的限制,因为你可以通过重载达到同样的效果:
int foo(arg1) {return foo(arg1, arg1);}