https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116070
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2024-07-24 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Don't do that then ;-) Some of these are easy to fix in the library like so: --- a/libstdc++-v3/include/bits/shared_ptr.h +++ b/libstdc++-v3/include/bits/shared_ptr.h @@ -114,7 +114,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __glibcxx_shared_ptr_arrays >= 201707L // Constraint for overloads taking array types with unknown bound, U[]. -#if __cpp_concepts +#if __cpp_concepts && __glibcxx_type_trait_variable_templates template<typename _Tp> requires is_array_v<_Tp> && (extent_v<_Tp> == 0) using _UnboundedArray = _Tp; But there's a compiler bug here too: template<class T> struct S { ~S(); }; template<class T> S<T>::~S() { } $ g++ -std=gnu++14 -fconcepts -c dest.cc dest.cc:2:25: error: declaration of '~ S' as non-member 2 | template<class T> S<T>::~S() { } | ^~