blob: 98c1d354fabcca8708a94fffb8ffffb211c618e3 [file] [log] [blame]
David Blaikie09048df2011-10-25 15:01:20 +00001// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++11
2
3// base-clause:
4// : base-specifier-list
5// base-specifier-list:
6// base-specifier ...[opt]
7// base-specifier-list , base-specifier ...[opt]
8// base-specifier:
9// attribute-specifier-seq[opt] base-type-specifier
10// attribute-specifier-seq[opt] virtual access-specifier[opt] base-type-specifier
11// attribute-specifier-seq[opt] access-specifier virtual[opt] base-type-specifier
12// class-or-decltype:
13// nested-name-specifier[opt] class-name
14// decltype-specifier
15// base-type-specifier:
16// class-or-decltype
17// access-specifier:
18// private
19// protected
20// public
21
22namespace PR11216 {
23 struct Base { };
24 struct Derived : decltype(Base()) { };
25
26 int func();
27 struct Derived2 : decltype(func()) { }; // expected-error {{base specifier must name a class}}
28
29 template<typename T>
30 struct Derived3 : decltype(T().foo()) { };
31 struct Foo { Base foo(); };
32 Derived3<Foo> d;
33}