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;
};