template<typename T>
{
typename T::type;
typename T::value_type;
typename T::type::value_type;
}
&& std::is_integral<typename T::value_type>::value
&& requires
{
T::value;
requires same_as<
decltype(T::value),
const typename T::value_type>;
T::type::value;
requires same_as<
decltype(T::type::value),
const typename T::value_type>;
requires T::value == T::type::value;
T{}();
requires same_as<decltype(T{}()), typename T::value_type>;
typename detail::require_constant<decltype(T{}()), T{}()>;
requires T{}() == T::value;
}