1 // { dg-do compile { target c++11 } } 2 3 template<bool, class T = void> 4 struct enable_if {}; 5 6 template<class T> 7 struct enable_if<true, T> 8 { 9 using type = T; 10 }; 11 12 template<class T> 13 struct is_true 14 { 15 static constexpr bool value = true; 16 }; 17 18 extern void* enabler; 19 20 template <typename T, typename enable_if<is_true<T>::value>::type*& = enabler> 21 class A 22 { 23 public: 24 A() 25 {} 26 template <typename U> 27 A& operator=( A<U>&& ) 28 { 29 return *this; 30 } 31 }; 32 33 int main() 34 { 35 A<int> a_i; 36 A<double> a_d; 37 38 a_i = a_d; // { dg-error "cannot bind" } 39 } 40