view gcc/testsuite/g++.old-deja/g++.oliva/typename2.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
line wrap: on
line source

// { dg-do assemble  }
// { dg-options "" }

// Copyright (C) 1999 Free Software Foundation

// by Alexandre Oliva <oliva@dcc.unicamp.br>
// based on bug report by Nick Rasmussen <nick@jive.org>

// This is slightly different from typename1.C.  This one tests
// whether the implicit typename extension works.  gcc 2.95 reports:

// warning: lookup of `foo' finds `struct foo'
// warning:   instead of `baz<T>::foo' from dependent base class
// warning:   (use `typename baz::foo' if that's what you meant)

// But baz<T>::foo is not a base class, and `foo' should have been
// found in baz's scope.

struct foo;

template <class T> struct bar {
  typedef int foo;
};

template <class T> struct baz {
  typedef bar<T>::foo foo; // { dg-error "need 'typename' before" "" { target c++17_down } }
  void m(foo); 
};