std::is_same
(C++)
First saw at Tesla.
Usage:
#include <type_traits>
if (std::is_same<int, const int>::value)
std::cout << "same types\n";
else
std::cout << "different types\n";
Implementation
This is how it is implemented under the hood (via a static constexpr
member variable)
template<typename T, typename U>
struct is_same {
static constexpr bool value = false; // By default false
};
template<typename T> // template specialization
struct is_same<T, T> {
static constexpr bool value = true; // Same type will return true
};
// incorrect, what am i thinking
using is_same_v<T,U> = typename is_same<T,U>::value;
template <typename T, typename U>
constexpr bool is_same_v = is_same<T,U>::value;