相关疑难解决方法(0)

我可以从上一个参数设置默认参数吗?

是否可以在函数参数列表中使用先前的参数作为参数列表中后续参数的默认值?例如,

void f( int a, int b = a, int c = b );
Run Code Online (Sandbox Code Playgroud)

如果可以,有任何使用规则吗?

c++ arguments function

42
推荐指数
3
解决办法
1万
查看次数

为什么C++不允许函数参数用于默认值后面的参数?

这是对这个问题的后续跟进.OP问题中的代码看起来非常合理且对我来说毫不含糊.为什么C++不允许使用以前的参数来定义后面的参数的默认值,如下所示:

int foo( int a, int b = a );
Run Code Online (Sandbox Code Playgroud)

此外,至少在C++ 11中,声明的参数类型可用于确定返回类型,因此以类似的方式使用函数参数并非闻所未闻:

auto bar( int a ) -> decltype( a );
Run Code Online (Sandbox Code Playgroud)

因此,问题是:为什么foo不允许上述声明的原因是什么?

c++ language-lawyer default-parameters

7
推荐指数
1
解决办法
215
查看次数