std::conditional
提供: cppreference.com
|
|
このページは、Google 翻訳を使って英語版から機械翻訳されました。
翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
| ヘッダ <type_traits> で定義
|
||
| template< bool B, class T, class F > struct conditional; |
(C++11およびそれ以降) | |
typeとして定義されているメンバのtypedefTを提供する場合、Btrueコンパイル時、またはFですB場合falseようです.Original:
Provides member typedef
type, which is defined as T if B is true at compile time, or as F if B is false.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目次 |
[編集] メンバータイプ
| メンバー·タイプ
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
type
|
T if B == true, F if B == false
|
[編集] 可能な実装
template<bool B, class T, class F> struct conditional { typedef T type; }; template<class T, class F> struct conditional<false, T, F> { typedef F type; }; |
[編集] 例
Run this code
#include <iostream> #include <type_traits> #include <typeinfo> int main() { typedef std::conditional<true, int, double>::type Type1; typedef std::conditional<false, int, double>::type Type2; typedef std::conditional<sizeof(int) >= sizeof(double), int, double>::type Type3; std::cout << typeid(Type1).name() << '\n'; std::cout << typeid(Type2).name() << '\n'; std::cout << typeid(Type3).name() << '\n'; }
出力:
i d d
[編集] 参照
| (C++11) |
コンパイル時ブーリアンに基づいて関数オーバーロードまたはテンプレート特殊化を隠蔽します (クラステンプレート) |

