整数値ラッパーがあるとします。たとえば、std::true_type
andのようなブール値のラッパーstd::false_type
:
template<typename T , T VALUE>
struct integral_value_wrapper
{
static const T value = VALUE;
};
template<bool VALUE>
using boolean_wrapper = integral_value_wrapper<bool,VALUE>;
using true_wrapper = boolean_wrapper<true>;
using false_wrapper = boolean_wrapper<false>;
そのブールラッパーを独自のクラスに使用します。たとえば、int チェッカーは次のようになります。
template<typename T>
struct is_int : public false_wrapper {};
template<>
struct is_int<int> : public true_wrapper {};
using type = int;
int main()
{
if( is_int<type>::value ) cout << "type is int" << endl;
}
私の質問は次のとおりです:型(この場合はboolラッパーから継承するクラス)を整数値に暗黙的にキャストする方法はありますか?
::value
これにより、次の例のように、ブール式でメンバーを使用することを回避できます。
using type = int;
int main()
{
if( is_int<type> ) cout << "type is int" << endl; //How I can do that?
}