https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102234
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- here is the valid code where the ICE happens: template <typename> constexpr bool IsDestructible{}; template <typename T> constexpr bool IsTriviallyDestructible = IsDestructible<T>; template <typename T> class Optional { ~Optional() requires(!IsDestructible<T>); ~Optional() requires(!IsTriviallyDestructible<T>); }; template <typename, typename ErrorT> class Result { using ErrorType = ErrorT; Optional<ErrorType> m_error; }; class SocketError; class UDPSocket { Result<UDPSocket, SocketError> u16ResultUDPSocketSocketError; };