http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57746
Daniel Krügler <daniel.kruegler at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.kruegler@googlemail. | |com --- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> --- According to the standard in general a definition is also a declaration ([basic.def] p2 "A declaration is a definition unless it declares a function without specifying the function’s body (8.4), [..]"), therefore [temp.explicit] applies here as well. I think that GCC is incorrect in not rejecting both cases, because the wording clearly includes a "static data member of a class template" (This error still exists in gcc 4.9 trunk). I also think that the meaning of the code is well-defined only for C++11, because in C++03 the concept of an explicit instantiation declaration did not exist.