http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59949
Bug ID: 59949 Summary: default value to std::function template function parameter causes »already defined« messages in assembler Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: moritz at bunkus dot org Created attachment 31954 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31954&action=edit sample file causing the bug I have a template function that takes an std::function argument. This argument has a default value, an in-place declared lambda function. As soon as I use that template function more than once with different types within a compilation unit I receive error messages from the assembler about symbols that are defined already. I've distilled it down to a code snippet I'm going to attach. In the original code the lambda function was actually using the template parameter T and could therefore not be converted to standalone function. This fails with 4.8 and 4.8.2, but I remember it failing back as early as 4.6.3. It works nicely with clang++ 3.3 and 3.4. With »works nicely« I mean that it compiles cleanly, links, and the resulting code does what I want it to (in my original source; this sample code obviously doesn't do anything at all). The command line used: g++ -std=c++11 -o cpp1 cpp1.cpp