
6 Feb
2004
6 Feb
'04
5:47 p.m.
Akim Demaille <akim@epita.fr> writes:
This legal code : === struct A { typedef int B; }; typedef A C; C::B i; ===
is not supported by the standard grammar.
Je comprends pas : tu dis "legal" et "not supported by the standard grammar". Pourtant pour moi c'est équivalent, non ?
Tout les compilateurs le gère, cela va de soit, et ce code "paraît" legal. Même comeau en strict C++ le compile. Et pourtant, dans le std du C++... c'est illégal. "La grammaire parle d'elle-même".
"C::" is a nested-name-specifier and then "C" a class-or-namespace-name. But here, it is a typedef name !
I think the grammar should be this :
class-or-namespace-name: class-name namespace-name typedef-name
-- Valentin David valentin@lrde.epita.fr