meta::same_as¶
Defined in header <mgs/meta/concepts/same_as.hpp>
.
template <typename T, typename U>
concept same_as = /* see below */;
Pre-C++20 implementation of the std::same_as concept.
Concept emulation¶
namespace mgs {
namespace meta {
template <typename T, typename U>
struct is_same_as { /* ... */ };
template <typename T, typename U>
constexpr auto is_same_as_v = is_same_as<T, U>::value;
template <typename T, typename U,
typename = std::enable_if_t<is_same_as_v<T, U>>>
using same_as = T;
} // namespace meta
} // namespace mgs
Example¶
#include <mgs/meta/concepts/same_as.hpp>
using namespace mgs::meta;
static_assert(is_same_as_v<bool, bool>, "");
static_assert(is_same_as_v<bool, void>, "");