Anonymous records with typedef names for linkage
Rafael Espíndola
rafael.espindola at gmail.com
Wed Jan 29 15:36:02 PST 2014
>> Can this go wrong in any non-delay-parsed context?
>
> ‘this’ is legal in some non-delay-parsed contexts, namely trailing result types.
>
> Do you have any objection to adopting my proposed diagnostic as a semi-temporary fix? All the code it would affect currently triggers an assertion, and frankly it feels like a “real” fix here would require a pretty disproportionate amount of effort for the expected benefit.
BTW, I tried
template <typename T>
void f(T* x) {
}
template <typename T>
void g(T* x) {
}
typedef struct {
void foo() {
f(this);
}
} A;
void bar(A *x) {
f(x);
g(x);
}
with with gcc trunk. With c++03 it still produces an error and with
c++11 it produces an internal f and an external g.
For what it is worth, clang would probably be the most standard
complaint even with just the error.
Cheers,
Rafael
More information about the cfe-commits
mailing list