如果在C++中定义了一个新变量,则可以在初始化表达式中使用该变量的名称,例如:
int x = sizeof(x);
Run Code Online (Sandbox Code Playgroud)
那么函数参数的默认值又如何呢?是否允许通过名称引用参数?例如:
void f(int y = sizeof(y)) {}
Run Code Online (Sandbox Code Playgroud)
该函数在 Clang 中被接受,但在 GCC 中被拒绝,并出现错误:
'y' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
演示: https: //gcc.godbolt.org/z/YsvYnhjTb
这里是哪个编译器?
c++ compiler-errors language-lawyer function-declaration default-arguments
是否可以在函数参数列表中使用先前的参数作为参数列表中后续参数的默认值?例如,
void f( int a, int b = a, int c = b );
Run Code Online (Sandbox Code Playgroud)
如果可以,有任何使用规则吗?