できた。特別仕様ごとに継承先を付け替えることができる。
#include <iostream>
#include <type_traits>
struct X{};
template < typename T >
struct Base : std :: false_type {};
template <>
struct Base< X > : std :: true_type {};
int main ( void ){
std :: cout << Base< int > :: value << std :: endl;
std :: cout << Base< X > :: value << std :: endl;
return 0;
}
template < typename T >
struct Base : std :: false_type {};
まずは汎用型を定義、こちらは std :: false_type
を継承している。
template <>
struct Base< X > : std :: true_type {};
しかし X
型に関しては std :: true_type
を継承する。
std :: cout << Base< int > :: value << std :: endl;
std :: cout << Base< X > :: value << std :: endl;
で、それぞれの Base<...> :: value
を表示させてみる。
0
1