Error message formatting feature request

Jeremiah Willcock
Wed Sep 1 19:42:00 GMT 2010

When compiling a program such as:

template <typename T>
void foo(T, typename T::type c) {c.y();}
struct x {typedef int type;};
void f() {foo(x(), 3);}

GCC 4.5.0 (correctly) produces the error message:

foo.cpp: In function Β‘void foo(T, typename T::type) [with T = x, typename 
T::type = int]Β’:
foo.cpp:4:21:   instantiated from here
foo.cpp:2:34: error: request for member Β‘yΒ’ in Β‘cΒ’, which is of non-class 
type Β‘x::typeΒ’

My feature request is to have the comma between "T = x" and "typename 
T::type = int" replaced by a semicolon.  In larger programs, the types 
given in the error message often themselves contain commas, while they do 
not typically contain semicolons.  Thus, this change would make the error 
messages easier to understand (and, in particular, to skim).

-- Jeremiah Willcock

More information about the Gcc mailing list