https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67348
David Stone <david at doublewise dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |david at doublewise dot net --- Comment #1 from David Stone <david at doublewise dot net> --- P0848 (Conditionally trivial special member functions) makes the change suggested by this bug report. However, similar code now causes an internal compiler error when testing conditionally trivial special member functions with -fconcepts: #include <type_traits> template<typename T> struct s { ~s() {} ~s() requires(std::is_same_v<T, int>) = default; }; static_assert(std::is_trivially_destructible_v<s<int>>); Outputs: <source>: In instantiation of 'struct s<int>': /opt/compiler-explorer/gcc-trunk-20190730/include/c++/10.0.0/type_traits:1410:12: required from 'struct std::is_trivially_destructible<s<int> >' /opt/compiler-explorer/gcc-trunk-20190730/include/c++/10.0.0/type_traits:3154:25: required from 'constexpr const bool std::is_trivially_destructible_v<s<int> >' <source>:9:20: required from here <source>:4:8: internal compiler error: tree check: expected function_type or method_type, have lang_type in deduce_noexcept_on_destructor, at cp/class.c:4804 4 | struct s { | ^ Please submit a full bug report, with preprocessed source if appropriate. See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1 See it live: https://godbolt.org/z/viCkS0