http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59204
Bug ID: 59204 Summary: Incorrect metaprogram evaluation in SFINAE context Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: webrown.cpp at gmail dot com Created attachment 31255 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31255&action=edit Demonstrating SFINAE failure to fail Command: g++-mp-4.9 -O3 -std=gnu++1y bug2.cc Version: g++-mp-4.9 (MacPorts gcc49 4.9-20131110_0) 4.9.0 20131110 (experimental) Attached program fails to compile because the 2nd static_assert incorrectly leads to a diagnostic. Used in a SFINAE context, it seems that the type expression void_t<typename T::type> always yields the type void. This seems too aggressive an outcome; when T has no T::type member, the expression should instead be treated as invalid, hence its context rejected due to SFINAE.