https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100825
--- Comment #1 from vopl at bk dot ru --- a little more minimized: template <class> void foo() {} //1 void useFirst() { foo<int>();// call 1 - instantiate "void foo<int>()" } template <class> void foo() requires true {} //2 void useSecond() { foo<int>();// call 2 - instantiate "void foo<int>() requires true" } $ g++ -std=c++20 -c b.cpp /tmp/ccnRtmjt.s: Assembler messages: /tmp/ccnRtmjt.s:59: Error: symbol `_Z3fooIiEvv' is already defined