is_copy_assignable.pass.cpp revision 6063ec176d5056683d6ddd310c2e3a8f1c7e1b46
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// type_traits 11 12// is_copy_assignable 13 14#include <type_traits> 15 16class Empty 17{ 18}; 19 20class NotEmpty 21{ 22public: 23 virtual ~NotEmpty(); 24}; 25 26union Union {}; 27 28struct bit_zero 29{ 30 int : 0; 31}; 32 33struct A 34{ 35 A(); 36}; 37 38class B 39{ 40 B& operator=(const B&); 41}; 42 43int main() 44{ 45 static_assert(( std::is_copy_assignable<int>::value), ""); 46 static_assert((!std::is_copy_assignable<const int>::value), ""); 47 static_assert((!std::is_copy_assignable<int[]>::value), ""); 48 static_assert((!std::is_copy_assignable<int[3]>::value), ""); 49 static_assert(( std::is_copy_assignable<int&>::value), ""); 50 static_assert(( std::is_copy_assignable<A>::value), ""); 51 static_assert(( std::is_copy_assignable<bit_zero>::value), ""); 52 static_assert(( std::is_copy_assignable<Union>::value), ""); 53 static_assert(( std::is_copy_assignable<NotEmpty>::value), ""); 54 static_assert(( std::is_copy_assignable<Empty>::value), ""); 55 static_assert((!std::is_copy_assignable<B>::value), ""); 56 static_assert((!std::is_copy_assignable<void>::value), ""); 57} 58