http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40127

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-01-15 
20:01:35 UTC ---
This code is invalid (and other compilers agree with me).  What type is going
to be chosen for T?  void*, int*, any pointer type?  There is no way the
compiler can deduce the type of T from the arguments.

This code is valid though:
template<typename T>
void    foo(int i, void(*f)(T*) = 0, T* a = 0) {}
int  main() {
        foo<void>(5);
        return 0;
        }

AS the compiler does not need to deduce the template argument type.

Reply via email to