簡體   English   中英

為什么C ++不允許函數參數用於默認值后面的參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM