これは、次のコンパイラエラーを与える:
error: default argument references parameter 'dimension'
MyClass(unsigned int dimension, std::vector vector=unitaryVector(dimension));
なぜこのイディオムはC++ 11で有効ではありませんか?それはかなり明白です:vector
引数が提供されている場合は、引数のコピーとしてvector
を初期化します。それ以外の場合は、関数を呼び出して戻り値のコピーとして初期化します。コンパイラがこれを理解できないのはなぜですか?
あなたの機能要求は、非常に合理的なものと思われますが、それは標準ですか?そうでない場合、コンパイラ作成者はそれを実装する義務がありません。 – pyon
可能な複製http://stackoverflow.com/questions/1880866/cc-default-argument-set-as-a-previous-argument –
std :: optional <>をデフォルトの値emptyの代わりに使用することがあります明示的なデフォルト値これには、デフォルト値があなたのABIの一部ではないという利点があります。したがって、パッチが簡単になります。 – lorro