view gcc/testsuite/g++.dg/lookup/template1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* PR c++/3009 */
/* { dg-do run } */
// According to 14.6.2.4 of C++ Standard:
// "If a base class is a dependent type, a member of that
// class cannot hide a name declared within a template, or a
// name from the template's enclosing scopes."
 
class B {
public:
  int foo() { return 1; }
};
 
int foo() { return 0; }
 
template <class T> class C : public T {
public:
  int caller() { return foo(); } // This must be ::foo, not B::foo.
};

int main() {
  C<B> c;
  return c.caller(); // Returns 1 if we got the wrong one.
}