using-decl-templates.cpp [plain text]
template<typename T> struct A {
void f() { }
struct N { }; };
template<typename T> struct B : A<T> {
using A<T>::f;
using A<T>::N;
using A<T>::foo; using A<double>::f; };
B<int> a;
template<typename T> struct C : A<T> {
using A<T>::f;
void f() { };
};
template <typename T> struct D : A<T> {
using A<T>::f;
void f();
};
template<typename T> void D<T>::f() { }
template<typename T> struct E : A<T> {
using A<T>::f;
void g() { f(); }
};
namespace test0 {
struct Base {
int foo;
};
template<typename T> struct E : Base {
using Base::foo;
};
template struct E<int>;
}
namespace PR7896 {
template <class T> struct Foo {
int k (float);
};
struct Baz {
int k (int);
};
template <class T> struct Bar : public Foo<T>, Baz {
using Foo<T>::k;
using Baz::k;
int foo() {
return k (1.0f);
}
};
template int Bar<int>::foo();
}
namespace PR10883 {
template <typename T>
class Base {
public:
typedef long Container;
};
template <typename T>
class Derived : public Base<T> {
public:
using Base<T>::Container;
void foo(const Container& current); };
}