https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91082
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- clang rejects it with: <source>:8:5: error: non-const lvalue reference to type 'void ()' cannot bind to a temporary of type '<overloaded function type>' static_cast<void(&)()>(&a<void>); ^ ~~~~~~~~ ICC rejects it with: <source>(8): error: cannot determine which instance of function template "a" is intended static_cast<void(&)()>(&a<void>); ^ While MSVC accepts it and just produces a warning: <source>(8): warning C4550: expression evaluates to a function which is missing an argument list