// { dg-do compile { target c++11 } } | |
template<bool, class T = void> | |
struct enable_if {}; | |
template<class T> | |
struct enable_if<true, T> | |
{ | |
using type = T; | |
}; | |
template<class T> | |
struct is_true | |
{ | |
static constexpr bool value = true; | |
}; | |
extern void* enabler; | |
template <typename T, typename enable_if<is_true<T>::value>::type*& = enabler> | |
class A | |
{ | |
public: | |
A() | |
{} | |
template <typename U> | |
A& operator=( A<U>&& ) | |
{ | |
return *this; | |
} | |
}; | |
int main() | |
{ | |
A<int> a_i; | |
A<double> a_d; | |
a_i = a_d; // { dg-error "cannot bind" } | |
} |