// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s // expected-no-diagnostics #if !__has_feature(cxx_access_control_sfinae) # error No support for access control as part of SFINAE? #endif typedef char yes_type; typedef char (&no_type)[2]; template struct unsigned_c { }; template class has_copy_constructor { static T t; template static yes_type check(unsigned_c * = 0); template static no_type check(...); public: static const bool value = (sizeof(check(0)) == sizeof(yes_type)); }; struct HasCopy { }; struct HasNonConstCopy { HasNonConstCopy(HasNonConstCopy&); }; struct HasDeletedCopy { HasDeletedCopy(const HasDeletedCopy&) = delete; }; struct HasPrivateCopy { private: HasPrivateCopy(const HasPrivateCopy&); }; int check0[has_copy_constructor::value? 1 : -1]; int check1[has_copy_constructor::value? 1 : -1]; int check2[has_copy_constructor::value? -1 : 1]; int check3[has_copy_constructor::value? -1 : 1];