http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45267
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org --- Comment #13 from Jason Merrill <jason at gcc dot gnu.org> 2011-04-19 00:31:21 UTC --- The language issue here is that 14.7.3/12 says, An explicit specialization of a function template is inline only if it is declared with the inline specifier or defined as deleted, and independently of whether its function template is inline. So in this case G++ is not propagating inline-related flags from the in-class declaration to the explicit specialization. It's not clear to me that the above passage should apply to this case, since the declaration in the class template is not itself a function template. But it probably should if there is a definition in the class body, so perhaps the most straightforward thing is to have it apply in this case as well. Since we aren't propagating inline flags, I suppose we should prune the always_inline attribute from DECL_ATTRIBUTES as well.