https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125569

--- Comment #4 from qurong at ios dot ac.cn ---
Look at the second test case in https://godbolt.org/z/1ssacrEcx.

In C++20, the following should be ill-formed:

struct NotLiteralCpp20 {
  ~NotLiteralCpp20() = delete;
};

template <NotLiteralCpp20 x> // should be ill-formed
struct Foo {};

Although std::is_literal_type was removed, a class with a deleted
(non-constexpr) destructor is not a literal type in C++20, so it cannot be used
as a non-type template parameter. Clang rejects this, but GCC currently accepts
it.

Reply via email to