template constexpr bool is_reference_v = false; template constexpr bool is_reference_v = true; template constexpr bool is_reference_v = true; struct A { template static constexpr bool is_reference_v = false; }; template constexpr bool A::is_reference_v = true; template constexpr bool A::is_reference_v = true; #if __cpp_concepts namespace concepts { template bool is_reference_v; template requires __is_same(T, T&) constexpr bool is_reference_v = true; template requires __is_same(T, T&&) && (!__is_same(T, T&)) constexpr bool is_reference_v = true; template requires (!__is_same(T, T&)) && (!__is_same(T, T&&)) constexpr bool is_reference_v = false; struct A { template static bool is_reference_v; }; template requires __is_same(T, T&) constexpr bool A::is_reference_v = true; template requires __is_same(T, T&&) && (!__is_same(T, T&)) constexpr bool A::is_reference_v = true; template requires (!__is_same(T, T&)) && (!__is_same(T, T&&)) constexpr bool A::is_reference_v = false; } #endif