https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98614
Bug ID: 98614 Summary: Copy ctor/assign cannot be defaulted in specialization by concept Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: iDingDong at outlook dot com Target Milestone: --- GCC 10.2 rejects the following piece of code: //--- #include <concepts> template <typename T> struct A { A(A<T> const&) = default; }; template <std::same_as<int> T> struct A<T> { A(A<T> const&) = default; }; //--- The error message: > <source>:8:19: error: 'A<T>::A(const A<T>&)' cannot be defaulted This can be reproduced by the compiler explorer: https://godbolt.org/z/1v6nPv I can locally reproduce this with: > g++ -std=c++20 test.cpp This error only occurs when trying to default a copy constructor in a partial specialization involving concept. The workaround is to omit the `<T>` in the constructor/assignment's argument declarator. PS: move constructor/assignment seems unaffected.