[Bug c++/28048] [4.0/4.1/4.2 Regression] ICE on accessing member of dependent name
gcc dot gnu dot org at chosenones dot dyndns dot org
gcc-bugzilla@gcc.gnu.org
Fri Jun 16 13:06:00 GMT 2006
------- Comment #2 from gcc dot gnu dot org at chosenones dot dyndns dot org 2006-06-16 12:59 -------
I'm not entirely sure myself, but:
Section 14.6.7
"When looking for the declaration of a name used in a template function
definition or static data member template definition, the usual lookup rules
_basic.lookup.unqual_, _basic.lookup.koenig_) are used for non-dependent names.
The lookup of names dependent on the template arguments is postponed until
the actual template argument is known (_temp.dep_)."
Section 14.6.2.3.1 seems to make this a value-dependent expression:
"1 Except as described below, a constant expression is value-dependent if
any subexpression is value-dependent."
Section 14.6.2.4
"An integral non-type template argument is dependent if the constant
expression it specifies is value-dependent."
So, it seems to be a dependent name, and in other contexts, the lookup of
dependent names is delayed. Also, existing practice and common sense seem to
suggest that this be default. In any case, an ICE is probably not what should
happen.
Comeau C/C++ 4.3.3: Compiles
MSVC 7.1: Compiles
That expression as
-- A static member initializer: Compiles
-- A default function argument: Compiles
A nested type expression of the same form as
-- A base class: Compiles
-- A nested type specifier [typedef]: Compiles
-- Function return type or argument type: Compiles
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28048
More information about the Gcc-bugs
mailing list