https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69621
Bug ID: 69621 Summary: extern std::string used as reference template-argument does not have [abi:cxx11] tag applied Product: gcc Version: 5.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ed at catmur dot co.uk Target Milestone: --- #include <string> template<std::string&> struct S { static void f(); }; extern std::string s; void g() { S<s>::f(); } asm emitted for g(): jmp S<s>::f() Expected: jmp S<s[abi:cxx11]>::f() The latter will be emitted if there is a definition for the std::string in the translation unit. Broken versions: 5.1.0, 5.2.0, 5.3.0 Workaround: change S to take its template-parameter by pointer: jmp S<&(s[abi:cxx11])>::f() Original reporter: http://stackoverflow.com/questions/35151104/stdstring-as-template-parameter-and-abi-tag-in-gcc-5 Possibly related: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66971