1 // PR c++/65498
2 // { dg-do compile { target c++11 } }
3 
4 template <typename, typename>
5 struct is_same
6 {
7   enum { value = false };
operatoris_same8   constexpr bool operator()() const noexcept { return value; }
9 };
10 
11 template <typename T>
12 struct is_same<T, T>
13 {
14   enum { value = true };
15   constexpr bool operator()() const noexcept { return value; }
16 };
17 
18 template <bool, typename = void>
19 struct enable_if { };
20 
21 template <typename T>
22 struct enable_if<true, T> { typedef T type; };
23 
24 struct A;
25 
26 template <typename, typename = void>
27 struct F { };
28 
29 template <typename X>
30 struct F<X, typename enable_if<is_same<X, A>{}()>::type> {
31     template <typename MakeDependent>
32     F(MakeDependent) {
33         auto ICE_HERE = __func__;
34         (void)ICE_HERE; // avoid -Wunused-variable
35     }
36 };
37 
38 int main() {
39     F<A>{1};
40 }
41