C++ 参数默认为先例参数';s值

C++ 参数默认为先例参数';s值,c++,arguments,C++,Arguments,我模模糊糊地记得有可能写下这样的话: void f(int a, int b=0, bool c=!val); 如果在参数列表的开头写了一些额外的东西。GCC中的示例给出了范围中未声明的val错误。 不幸的是,我在互联网上找不到任何参考资料,所以我在这里问。如何重载f()?val是否为常量并不成问题 void f(int a, int b, bool c); void f(int a, int b=0) { f(a,b,!val); } 我知道这是可能的唯一方法是,如果val是函数范

我模模糊糊地记得有可能写下这样的话:

void f(int a, int b=0, bool c=!val);
如果在参数列表的开头写了一些额外的东西。GCC中的示例给出了范围中未声明的
val
错误。 不幸的是,我在互联网上找不到任何参考资料,所以我在这里问。

如何重载f()?val是否为常量并不成问题

void f(int a, int b, bool c);

void f(int a, int b=0) {
   f(a,b,!val);
}

我知道这是可能的唯一方法是,如果
val
是函数范围内的
const
值(可能是类枚举或全局const变量)。出于其他原因,我决定已经使用您的方法。