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_move_assignable 13 14 #include <type_traits> 15 16 class Empty 17 { 18 }; 19 20 class NotEmpty 21 { 22 public: 23 virtual ~NotEmpty(); 24 }; 25 26 union Union {}; 27 28 struct bit_zero 29 { 30 int : 0; 31 }; 32 33 struct A 34 { 35 A(); 36 }; 37 38 int main() 39 { 40 static_assert(( std::is_move_assignable<int>::value), ""); 41 static_assert((!std::is_move_assignable<const int>::value), ""); 42 static_assert((!std::is_move_assignable<int[]>::value), ""); 43 static_assert((!std::is_move_assignable<int[3]>::value), ""); 44 static_assert((!std::is_move_assignable<int[3]>::value), ""); 45 static_assert((!std::is_move_assignable<void>::value), ""); 46 static_assert(( std::is_move_assignable<A>::value), ""); 47 static_assert(( std::is_move_assignable<bit_zero>::value), ""); 48 static_assert(( std::is_move_assignable<Union>::value), ""); 49 static_assert(( std::is_move_assignable<NotEmpty>::value), ""); 50 static_assert(( std::is_move_assignable<Empty>::value), ""); 51 } 52