https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86642
W E Brown <webrown.cpp at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |webrown.cpp at gmail dot com --- Comment #1 from W E Brown <webrown.cpp at gmail dot com> --- I believe this issue is based on a minor misunderstanding. As written, the return type is never a void type. However, a small adjustment in the return type gives what seems to be the intended effect: std::enable_if_t<true, void> // assumes C++14 or later or typename std::enable_if<true, void>::type // any C++ dialect Either will work to invoke the enable_if metafunction and produce a SFINAE effect. However, as written, the metafunction is not invoked and so does not activate SFINAE. However, as written, the code says that func will return an object of this metafunction's type; since the function does not do so, the warning seems correct. I respectfully recommend this issue be closed as INVALID.