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 // <experimental/type_traits> 11 12 #include <experimental/type_traits> 13 14 #if _LIBCPP_STD_VER > 11 15 16 namespace ex = std::experimental; 17 18 int main() 19 { 20 { 21 typedef char T; 22 static_assert(ex::alignment_of_v<T> == 1, ""); 23 static_assert(std::is_same<decltype(ex::alignment_of_v<T>), const std::size_t>::value, ""); 24 static_assert(ex::alignment_of_v<T> == std::alignment_of<T>::value, ""); 25 } 26 { 27 typedef char(T)[1][1][1]; 28 static_assert(ex::rank_v<T> == 3, ""); 29 static_assert(std::is_same<decltype(ex::rank_v<T>), const std::size_t>::value, ""); 30 static_assert(ex::rank_v<T> == std::rank<T>::value, ""); 31 } 32 { 33 typedef void T; 34 static_assert(ex::rank_v<T> == 0, ""); 35 static_assert(ex::rank_v<T> == std::rank<T>::value, ""); 36 } 37 { 38 typedef char(T)[2][3][4]; 39 static_assert(ex::extent_v<T> == 2, ""); 40 static_assert(std::is_same<decltype(ex::extent_v<T>), const std::size_t>::value, ""); 41 static_assert(ex::extent_v<T> == std::extent<T>::value, ""); 42 } 43 { 44 typedef char(T)[2][3][4]; 45 static_assert(ex::extent_v<T, 0> == 2, ""); 46 static_assert(ex::extent_v<T, 0> == std::extent<T, 0>::value, ""); 47 } 48 { 49 typedef char(T)[2][3][4]; 50 static_assert(ex::extent_v<T, 1> == 3, ""); 51 static_assert(ex::extent_v<T, 1> == std::extent<T, 1>::value, ""); 52 } 53 { 54 typedef char(T)[2][3][4]; 55 static_assert(ex::extent_v<T, 5> == 0, ""); 56 static_assert(ex::extent_v<T, 5> == std::extent<T, 5>::value, ""); 57 } 58 { 59 typedef void T; 60 static_assert(ex::extent_v<T, 0> == 0, ""); 61 static_assert(ex::extent_v<T, 0> == std::extent<T, 0>::value, ""); 62 } 63 } 64 #else /* _LIBCPP_STD_VER <= 11 */ 65 int main() {} 66 #endif /* _LIBCPP_STD_VER > 11 */ 67