http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58317
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Oleg Smolsky from comment #2) > Hey Jonathan, here is a simpler and more natural way to rewrite your example: > > struct A { > static int f() { return 0; } > A(int) { } > }; > > int main() { > A a(A::f()); // it is static! > } Yes, I know, that's not the point. The standard doesn't disallow everything that can be written another way. The point is that the original code is syntactically legal. > So, do you happen do have a reference to the Standard? Or is it one of the > things that are not mentioned explicitly? 3.3.2 [basic.scope.pdecl] paragraph 1. I already said GCC fails to warn, but it should not reject the code.