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;