15

C++11 では、次のオブジェクトが導入されていますstd::ignore

const /* unspecified */ ignore;

簡潔にするために、

typedef decltype(std::ignore) T; 

私が知る限り、 [C++11, 20.4.2.4:7]の仕様により、 の唯一の要件Tは であるということです。CopyAssignablestd::tie

Tg++-4.8 では、それが追加であることがわかりましたDefaultConstructible(たとえば、T x;コンパイル)。これは実装定義の動作ですか?

(私が見逃した他の要件がある場合はT、詳しく説明してください。)

4

2 に答える 2

8

私が知る限り、 [C++11, 20.4.2.4:7]の仕様により、 の唯一の要件Tは であるということです。CopyAssignablestd::tie

正式には、私はまったく要件が課されているとは思いません。tie()が引数として受け入れることができるという事実ignoreは、その型の値をタプルに格納する必要があるという意味ではありません。これは実際に起こる可能性が最も高いですが、これが正式な仕様によって必ずしも暗示されているとは思いません。

これは実装定義の動作ですか?

いいえ、実装はそれを文書化する必要がないため、動作は未規定です (この点を明確にしてくれた Pete Becker に感謝します)。

于 2013-05-23T19:12:00.173 に答える