http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56039
--- Comment #3 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2013-01-19 17:20:21 UTC --- (In reply to comment #2) You make a good point, but my remaining argument would focus on the fact that the expression false && [](){} is always invalid because it attempts to combine a boolean expression and a void expression (Not covered by 5.14). This is presumably easy to fix by ensuring that the lambda expressions return a boolean value. This code still not accepted by gcc 4.8 nor by clang 3.2. While you may try to insist that it should, this looks like a potential core language issue to me. I'm forwarding this problem to CWG. I don't think that any compiler change will be done before that decision, because the CWG group intentionally tried to forbid lambda expressions within template declarations because of some known technical problems.