This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [c++] Another question about demangler output


Ian Lance Taylor <ian@wasabisystems.com> writes:

[...]

| This gives _ZN2BBcvPFivEEv which (currently) demangles as
|     BB::operator int (*)()()
| 
| But using a gcc extension, I can do this without a typedef:
| 
| class BB { operator typeof (int(*)())(); };
| BB::operator typeof (int(*)())() { return 0; }

If you do that, then you might end up accpeting two different
declarations as same where the token-oriented scheme (ODR) would have
kept them separate.  That is, you would not be able to differentiate

tu1.C:

  struct B { operator typeof(int(*)())(); };

from

tu2.C:

  struct B { typedef int (*foo)(); operator foo(); };

ODR says they are different.

-- Gaby


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]