https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117887
--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The workaround is to place the requires outside of the template type alias. That is replace: ``` // If the compare is not transparent we want to construct key_type once. template <typename K> using KeyTypeOrK = std::conditional_t<requires { typename key_compare::is_transparent; }, K, key_type>; With: ```` // If the compare is not transparent we want to construct key_type once. static constexpr bool key_compare_is_transparent = requires { typename key_compare::is_transparent; }; // If the compare is not transparent we want to construct key_type once. template <typename K> using KeyTypeOrK = std::conditional_t<key_compare_is_transparent, K, key_type>; ````