summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp0x/sfinae27.C
blob: 93327ba9cc5b0a5796d28c371c6388c4307a11ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// PR c++/50157
// { dg-options -std=c++0x }

template<class T>
T val();

template<class T, class Arg, class =
  decltype(::new T(val<Arg>()))
>
auto test(int) -> char;

template<class, class>
auto test(...) -> char (&)[2];

struct P {
  explicit operator bool(); // (#13)
};

typedef decltype(test<bool, P>(0)) type; // OK
typedef decltype(test<float, P>(0)) type2; // Error (#17)