aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae29.C
blob: 8792778acf8eea816efcae8506dc7a4b8d5b1d09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// PR c++/51047
// { dg-do compile { target c++11 } }

template<typename T> T &&declval();
template<class T> decltype(declval<T>().x) f(T *);
template<class T> char f(T);
struct B1{ int x; };
struct B2{ int x; };
struct D : public B1, B2{};
struct S { int x; };
int main()
{
  S *p = nullptr;
  static_assert(sizeof(f(p)) == sizeof(int), "");
  D *q = nullptr;
  static_assert(sizeof(f(q)) == 1u, "");
}