http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31584

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid
            Summary|[DR502] ICE on probably     |[DR502] nested enum not
                   |invalid code                |considered dependent
      Known to fail|                            |4.4.3, 4.5.2, 4.6.0

--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-05-05 
17:32:15 UTC ---
Summary changed, as there's no ICE now. This is 'accepts-invalid' because DR502
means C<T>::Inner is dependent, and [temp.class.spec]/8 says specialized
non-type arguments shall not have dependent types.


Reduced:

template <class T>
struct C
{
  enum Inner { c };

  template<Inner I, int dummy> struct Dispatcher;

  template<int dummy> struct Dispatcher<c, dummy> 
  { };

};

int main()
{
  C<double> Test;
}

expected error would be something like:

error: type 'C<T>::Inner' of template argument 'c' depends on a template
parameter

Reply via email to