[英]Why C++ does not allow function parameters used for default values latter parameters?
這是對這個問題的后續跟進。 OP問題中的代碼看起來非常合理且對我來說毫不含糊。 為什么C ++不允許使用以前的參數來定義后面的參數的默認值,如下所示:
int foo( int a, int b = a );
此外,至少在C ++ 11中,聲明的參數類型可用於確定返回類型,因此以類似的方式使用函數參數並非聞所未聞:
auto bar( int a ) -> decltype( a );
因此,問題是:為什么不允許上述foo
聲明的原因是什么?
一方面,這將需要a
被之前評估b
,但C ++(如C)沒有定義評估順序為函數參數。
您仍然可以通過添加重載來獲得所需的效果:
int foo(int a, int b)
{ /* do something */ }
int foo(int a)
{ return foo(a, a); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.