私は本を読んでいます.C++の特徴を説明しています.C++のtype_traitsヘッダーの例は、奇妙な?:
の使用例です。ここに対応する/ usr/include/C++/...ファイル:strange operator?:decltypeの使用法:
template<typename _Tp, typename _Up>
static __success_type<typename decay<decltype
(true ? std::declval<_Tp>()
: std::declval<_Up>())>::type> _S_test(int);
が与えられた宣言の目的はさておき、?:
オペレータの使用量は、このコードで私を困惑します。最初のオペランドがtrue
の場合、評価の結果として常にstd::declval<_Tp>()
が選択されます。 そのオペランドの選択は実際にどのように機能しますか?
編集:もともとNicolai M. Josuttisの「The C++標準ライブラリ:チュートリアルとリファレンス、第2版」、p.125を読んでください。しかし、GCCヘッダファイルに比べてやや簡略化した形で与えられています。
書籍btwについて教えてください。 – manatttta
ここで重要なのは、式の型であり、どの部分が評価されるかではありません。 – Mat
マットは言った。この式は、三項条件演算子型減算メカニズムを使用するために使用されます([ここ](http://en.cppreference.com/w/cpp/language/operator_other)参照)。 – StoryTeller