https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101704
Bug ID: 101704 Summary: "Already defined" error in case of many concept conversion operators Product: gcc Version: 11.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: fchelnokov at gmail dot com Target Milestone: --- Example code: ``` template <auto =[]{}> class C; template <typename, typename = C<>> concept x = true; #include <iostream> struct S { operator x<C<>> auto() { return 42; } operator x<C<>> auto() { return '+'; } operator x<C<>> auto() { return 44LL; } operator x<C<>> auto() { return 45.5; } operator x<C<>> auto() { return 46.5f; } operator x<C<>> auto() { return 47L; } operator x<C<>> auto() { return 48ULL; } operator x<C<>> auto() { return 49U; } }; int main() { S s; std::cout << (int)s << "\n"; std::cout << (char)s << "\n"; std::cout << (long long)s << "\n"; std::cout << (double)s << "\n"; std::cout << (float)s << "\n"; std::cout << (long)s << "\n"; std::cout << (unsigned long long)s << "\n"; std::cout << (unsigned)s << "\n"; } ``` GCC 11 prints: ``` /tmp/ccfcrhcg.s: Assembler messages: /tmp/ccfcrhcg.s:33: Error: symbol `_ZN1ScvDaEv' is already defined /tmp/ccfcrhcg.s:55: Error: symbol `_ZN1ScvDaEv' is already defined /tmp/ccfcrhcg.s:77: Error: symbol `_ZN1ScvDaEv' is already defined /tmp/ccfcrhcg.s:101: Error: symbol `_ZN1ScvDaEv' is already defined /tmp/ccfcrhcg.s:123: Error: symbol `_ZN1ScvDaEv' is already defined /tmp/ccfcrhcg.s:145: Error: symbol `_ZN1ScvDaEv' is already defined /tmp/ccfcrhcg.s:167: Error: symbol `_ZN1ScvDaEv' is already defined Execution build compiler returned: 1 ``` GCC (truck) crashes on this example: ``` <source>:29:1: internal compiler error: symtab_node::verify failed 0x1dabd49 internal_error(char const*, ...) ???:0 0xb68322 symtab_node::verify_symtab_nodes() ???:0 0xb844cf symbol_table::finalize_compilation_unit() ???:0 ``` https://gcc.godbolt.org/z/KP8Wqhz96