
On Apr 27, 2007, at 3:24 PM, Eric Niebler wrote:
Huh, they say it's not a bug.
------- Comment #1 from pinskia at gcc dot gnu dot org 2007-04-27 20:16 ------- No, the error message is correct. You change the meaning of match_context in the class.
Doing: typedef ::match_context<BidIter> match_context;
Fixes the source to be valid C++. Note C++ does not really require a diagnostic here (it is one of the invalid code that C++ does not require one). ----
Seems odd to me, but I don't have time to dig in the standard right now. GCC 4.3 is the only compiler that complains about this. Even Comeau accepts it.
Ah, they're right. This is the first paragraph of [basic.scope.class], which says: 2) A name N used in a class S shall refer to the same declaration in its context and when re-evaluated in the completed scope of S. No diagnostic is required for a violation of this rule. I think that's the first time---ever---where I've seen GCC be more picky than EDG in strict mode :) - Doug