次の関数があるとすると、それが生成する値は、コード内の他の多くの関数で必要になります。
float mean(foo param1, bar param2);
私の他の関数は次のようになります。
float foobar(foo param1, bar param2, float meanValue);
私がやりたいことは次のとおりです。
float foobar(foo param1, bar param2, float meanValue = mean(param1, param2));
関数をデフォルトのパラメーターとして渡すことは有効ですが、コンパイラー(VS2008)は、パラメーターがmeanValueで始まり、右から左にスタックにプッシュされるため、param1とparam2が宣言されていないと文句を言います。もちろん、パラメータの順序を逆にすることはできません。その場合、最初のパラメータのデフォルト値を指定できないためです。
平均値に-10000のような値を渡して、mean()関数を呼び出すように自分に指示することができます。または、すべての関数をオーバーロードすることもできます(そして、オーバーロードするのに10以上あります)が、それはあまりきれいではありません。関数をデフォルトのパラメーターとして呼び出すことができるのは本当に素晴らしいことだと思います。私がやろうとしていることを達成するためのきちんとした方法があるかどうか疑問に思っています。