http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51827
Bug #: 51827 Summary: Error: 'FOO' conflicts with a previous declaration, with PCH/LTO/C++11 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: d.g.gorbac...@gmail.com Host: i686-pc-linux-gnu Target: i686-pc-linux-gnu Build: i686-pc-linux-gnu GCC 4.7.0 20120107 (experimental) TestCase.H:3:29: error: 'T<Y>::T(S<A ...>) [with A = {A ...}; Y = int]' conflicts with a previous declaration TestCase.H:3:29: note: previous declaration 'T<Y>::T(S<A ...>)' TestCase.H:3:29: note: -fabi-version=6 (or =0) avoids this error with a change in mangling TestCase.H:3:29: error: 'T<Y>::T(S<A ...>) [with A = {A ...}; Y = int]' conflicts with a previous declaration TestCase.H:3:29: note: previous declaration 'T<Y>::T(S<A ...>)' TestCase.H:3:29: note: -fabi-version=6 (or =0) avoids this error with a change in mangling Compile with `-flto -std=gnu++11': =================== 8< =================== template<typename X> struct S { }; template<typename Y> struct T { template <typename ... A> T(S <A ...>); }; inline void f(T<int>) { } =================== >8 ===================