http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45755
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-09-23 12:55:23 UTC --- That wording was changed to clarify that it means a template will never be instantiated to produce S::S(S), it does not mean a template cannot be used to perform copies, see http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1080 I beleive G++ is correct here, the constructor is instantied with T = S&, to produce S::S(S&) which is a valid constructor for copy-initialization