C++默认参数为另一个参数

Ber*_*ard 4 c++ parameters

我可以使用第一个参数作为第二个参数的默认值,像这样吗?

int do_something(int a, int b = a + 1){
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我的编译器似乎不喜欢它,所以也许它是不允许的.

Ben*_*ley 11

您的问题已经得到解答(不允许),但是如果您没有意识到,解决方法对于函数重载来说是微不足道的.

int do_something(int a, int b){
    /* ... */
}

int do_something(int a) {
    return do_something(a, a + 1);
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*ian 9

这个不允许.

函数参数的评估顺序未指定.因此,函数的参数不应在默认参数中使用,即使它们未被评估.

(来自[dcl.fct.default]/9 in C++ 14)