55

ここで、次のようなコードを見つけました。

auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. }

私が読んだすべてのドキュメントで、次のようにdecltype署名されていると言われました。

decltype( entity )

また

decltype( expression )

そして、どこにも2番目の引数はありません。少なくともそれがcppreferenceで指摘されていることです。これは の 2 番目の引数decltypeですか? もしそうなら、それは何をしますか?

4

1 に答える 1

73

コンマは単純にコンマ演算子 (つまり、型は rhs 側の型です: void) という式なので、別の引数ではありません。

そのコードは SFINAE を使用しています -t.reserve(n)存在する場合は有効ですが、戻り値の型をそのままにしておきたいvoidです。

于 2012-12-22T13:49:48.830 に答える