1 // PR c++/65133
2 // { dg-do compile { target c++11 } }
3 
4 template<bool, typename Tp = void>
5 struct enable_if { };
6 
7 template<typename Tp>
8 struct enable_if<true, Tp> { typedef Tp type; };
9 
10 template <int I>
11 struct count
12 {
13   using type = typename count<I-1>::type;
14 };
15 
16 template <>
17 struct count<0>
18 {
19   using type = void;
20 };
21 
22 template <int I>
23 auto foo(typename enable_if<(I>=0)>::type *
24 	 = nullptr) -> typename count<I>::type { }
25 
26 template <int I>
27 void foo(typename enable_if<(I<0)>::type * = nullptr) { }
28 
29 int main()
30 {
31   foo<2>();
32   foo<-1>();
33 }
34