https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60916

Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-10-05
                 CC|                            |manu at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
The error within notes is also quite confusing, it is not clear if the
additional errors are explaining the notes or are separate errors.

Clang makes this much clearer:

test.cc:19:10: error: no matching function for call to 'wrapper'
  return wrapper<char, f> ();
         ^~~~~~~~~~~~~~~~
test.cc:6:5: note: candidate template ignored: invalid explicitly-specified
argument for template parameter 'F'
int wrapper ()
    ^
test.cc:12:5: note: candidate template ignored: invalid explicitly-specified
argument for template parameter 'T2'
int wrapper ()
    ^

GCC at least could do:

t.cc: In function ‘int docall()’:
t.cc:19:28: error: no matching function for call to ‘wrapper()’
   return wrapper<char, f> ();
                            ^
t.cc:19:28: note: candidates are:
t.cc:6:5: note: #1 'template<class T, int (* F)(const T*)> int wrapper()'
 int wrapper ()
     ^
t.cc:6:5: note: template argument deduction/substitution failed: could not
convert template argument ‘f’ to ‘int (*)(const char*)’
t.cc:12:5: note: #2 'template<class T1, class T2, int (* F)(const T1*, const
T2*)> int wrapper()'
 int wrapper ()
     ^
t.cc:12:5: note: template argument deduction/substitution failed:

Reply via email to