http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51629
rob.desbois at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rob.desbois at gmail dot com --- Comment #2 from rob.desbois at gmail dot com --- I believe I have incurred this same bug on gcc 4.7.2 with copy constructor, and both move & copy assignment operators. A workaround for my case is to have only the function declaration inline, and to move the defaulted declaration out of line. Keeping everything else the same - extern template declaration, explicit template instantiation, and file layout - this yields the required results.