http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56039
--- Comment #4 from Hubert Tong <hstong at ca dot ibm.com> 2013-01-19 20:10:59 UTC --- (In reply to comment #3) I seem to find that the expression in question > > false && [](){} > is valid because there is a implicit conversion sequence consisting of a user-defined conversion to pointer-to-function followed by a conversion to bool from the pointer type. > 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. Sure. While I may not have a full appreciation of the difficultly for having an implementation which works with this, I am aware that there is at least the issue with mangling hinted at by the note in 14.5.6.1 [temp.over.link] p7 with regards to the linking of equivalent declarations. I am not sure, though, that implementation difficulty is a good reason to remove the ability to have SFINAE applied on statements such as the declaration in the IsConstructibleImpl specialization above.