非常に簡単です。ここで
template<typename T, typename U>
struct is_same
{
static const bool value = false;
};
template<typename T>
struct is_same<T, T>
{
static const bool value = true;
};
template<typename T, typename U>
bool eqTypes() { return is_same<T, U>::value; }
がlive exampleです:ちょうど型特性とヘルパー関数を定義します。
C++ 11では
、あなたがstd::false_type
とstd::true_type
を使用することを許可されている場合、あなたはこの方法の上に書き直します:
#include <type_traits>
template<typename T, typename U>
struct is_same : std::false_type { };
template<typename T>
struct is_same<T, T> : std::true_type { };
template<typename T, typename U>
constexpr bool eqTypes() { return is_same<T, U>::value; }
お知らせ、ほとんど同じことをして型特性std::is_same
、その標準ライブラリの一部として利用できます。
['std :: is_same'](http://en.cppreference.com/w/cpp/types/is_same)を使用することは許可されていますか? – juanchopanza
http://stackoverflow.com/a/3450395/168175では、それを自分で実装する方法を示していますが、構造体の代わりに関数にする必要があります(単純に)。 – Flexo