summaryrefslogtreecommitdiffstats
path: root/test/SemaTemplate/dependent-base-classes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaTemplate/dependent-base-classes.cpp')
-rw-r--r--test/SemaTemplate/dependent-base-classes.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/test/SemaTemplate/dependent-base-classes.cpp b/test/SemaTemplate/dependent-base-classes.cpp
index 80d20b0..08d4de5 100644
--- a/test/SemaTemplate/dependent-base-classes.cpp
+++ b/test/SemaTemplate/dependent-base-classes.cpp
@@ -57,7 +57,6 @@ namespace PR6031 {
int foo() {
class NoDepBase::Nested nested; // expected-error{{'Nested' does not name a tag member in the specified scope}}
typedef typename NoDepBase::template MemberTemplate<T>::type type; // expected-error{{'MemberTemplate' following the 'template' keyword does not refer to a template}} \
- // FIXME: expected-error{{expected an identifier or template-id after '::'}} \
// FIXME: expected-error{{unqualified-id}}
return NoDepBase::a; // expected-error{{no member named 'a' in 'struct PR6031::NoDepBase'}}
}
@@ -110,3 +109,27 @@ namespace PR6081 {
}
};
}
+
+namespace PR6413 {
+ template <typename T> class Base_A { };
+
+ class Base_B { };
+
+ template <typename T>
+ class Derived
+ : public virtual Base_A<T>
+ , public virtual Base_B
+ { };
+}
+
+namespace PR5812 {
+ template <class T> struct Base {
+ Base* p;
+ };
+
+ template <class T> struct Derived: public Base<T> {
+ typename Derived::Base* p; // meaning Derived::Base<T>
+ };
+
+ Derived<int> di;
+}
OpenPOWER on IntegriCloud