https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106372
Bug ID: 106372 Summary: error: redefinition of ‘const char *mangled function name*[]’ Product: gcc Version: 11.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: striker159 at web dot de Target Milestone: --- The following minimal code compiles with g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) , but does not compile with g++-11 (Ubuntu 11.1.0-1ubuntu1~20.04). Target: x86_64-linux-gnu --------------------------------- Error message: bug1.cpp:26:2: error: redefinition of ‘const char _ZTSZN1AIjEC4ESt8functionIFmmEEEd_UlT_E_ []’ 26 | }; | ^ bug1.cpp:26:2: note: ‘const char _ZTSZN1AIjEC4ESt8functionIFmmEEEd_UlT_E_ [37]’ previously defined here --------------------------------- //g++-11 -std=c++17 -Wall -Wextra -O3 bug1.cpp -c -o bug1_g++11.o #include <memory> #include <cstdint> #include <functional> template<class T> struct A{ using Callback = std::function<std::size_t(std::size_t)>; A(Callback pol = [](auto){return 42;}){ pol(1); } }; struct B{ B() = default; B(int){} A<std::uint32_t> member; }; struct C{ void foo() { auto ptr = std::make_unique<B>(); } };