view gcc/testsuite/g++.dg/template/koenig9.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++/29131
// int has no associated namespaces, so arg-dep lookup doesn't find g(int).

template <class T> int f() { return g(T()); } // { dg-error "argument-dependent" }
int g(int);				      // { dg-message "declared here" }
int i = f<int>();

// PR c++/24163
// Unqualified lookup doesn't find names from dependent bases.

template <class T>
struct A
{
  static void h(T);
};

template <class T> struct B: A<T>
{
  void f() { h(T()); }		// { dg-error "argument-dependent" "arg-dep" }
  static void g() { h(T()); }	// { dg-error "argument-dependent" "arg-dep" }
};

int main()
{
  B<int> b;
  b.f();
  b.g();
}

// { dg-message "dependent base .A.int" "base" { target *-*-* } 19 }
// { dg-message "this->h" "this->h" { target *-*-* } 19 }
// { dg-message "dependent base .A.int" "base" { target *-*-* } 20 }
// { dg-message "B::h" "B::h" { target *-*-* } 20 }