c++テンプレートメタプログラミング7:タイプ判定のtraitsクラス
910 ワード
2 判断タイプ用traitsクラス
is_voidクラスはテンプレートパラメータのタイプを判断することができ、使用は簡単で、注意して、直接使用することもできます::value.
しかし、実装は面白く、特化は異なるクラスを継承するために使用できる.ここではclang++実装コードを探していません.boostコードで代用しましょう.
c++11標準サポートの同理とis_pointer, is_floating_point, is_array, is_lvalue_reference, is_rvalue_reference, is_member_object_pointer, is_member_function_pointer, is_enum, is_union, is_class, is_function.実装コードは簡単です.ここではもう一つ示します.
is_voidクラスはテンプレートパラメータのタイプを判断することができ、使用は簡単で、注意して、直接使用することもできます::value.
cout << std::is_void::type::value << endl;
cout << std::is_void::type::value << endl;
しかし、実装は面白く、特化は異なるクラスを継承するために使用できる.ここではclang++実装コードを探していません.boostコードで代用しましょう.
template
struct is_void : public false_type{};
template <>
struct is_void : public true_type{};
c++11標準サポートの同理とis_pointer, is_floating_point, is_array, is_lvalue_reference, is_rvalue_reference, is_member_object_pointer, is_member_function_pointer, is_enum, is_union, is_class, is_function.実装コードは簡単です.ここではもう一つ示します.
template
struct is_pointer : public false_type{};
template
struct is_pointer : public true_type{};