[Bug c++/102774] Stop showing "error: variable or field ‘f’ declared void" after an earlier error in a declarator

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 19 07:29:48 GMT 2022


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

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
For the first case:

template<typename.. T> void f(T...) { }

GCC prints:

f.C:1:18: error: expected nested-name-specifier before ‘.’ token
    1 | template<typename.. T> void f(T...) { }
      |                  ^
f.C:1:18: error: expected ‘>’ before ‘.’ token
f.C:1:29: error: variable or field ‘f’ declared void
    1 | template<typename.. T> void f(T...) { }
      |                             ^
f.C:1:31: error: ‘T’ was not declared in this scope
    1 | template<typename.. T> void f(T...) { }
      |     

Clang says:

f.C:1:18: error: expected a qualified name after 'typename'
template<typename.. T> void f(T...) { }
                 ^
f.C:1:18: error: expected ',' or '>' in template-parameter-list
f.C:1:31: error: unknown type name 'T'
template<typename.. T> void f(T...) { }
                              ^
3 errors generated.

This has no "declared void" noise.


More information about the Gcc-bugs mailing list