template <typename T, T t> struct Value {
using type = T;
static constexpr T value = t;
};
Value<T, t>
a type-value of type T
, with value t
.
template <bool B> using Bool = Value<bool, B>;
Bool<B>
represents a boolean type-value
.
template <bool N> using Int = Value<int, N>;
Int<N>
represents an integer type-value
.