http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55680
--- Comment #1 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2012-12-15 16:44:08 UTC --- The same problem exists for gcc 4.8.0 20121209 (experimental). The code looks valid to me. I tried to deduce the root of the compiler problem here. For example trying to rewrite it as typedef void (*code_t) (); template <> code_t X<double>::code = [](){}; but the error still exists.