type_at.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // Copyright Louis Dionne 2013-2017
  2. // Distributed under the Boost Software License, Version 1.0.
  3. // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
  4. #include <boost/hana/detail/type_at.hpp>
  5. #include <type_traits>
  6. namespace hana = boost::hana;
  7. template <int>
  8. struct x;
  9. static_assert(std::is_same<
  10. hana::detail::type_at<0, x<0>>::type,
  11. x<0>
  12. >{}, "");
  13. static_assert(std::is_same<
  14. hana::detail::type_at<0, x<0>, x<1>>::type,
  15. x<0>
  16. >{}, "");
  17. static_assert(std::is_same<
  18. hana::detail::type_at<0, x<0>, x<1>, x<2>>::type,
  19. x<0>
  20. >{}, "");
  21. static_assert(std::is_same<
  22. hana::detail::type_at<1, x<0>, x<1>>::type,
  23. x<1>
  24. >{}, "");
  25. static_assert(std::is_same<
  26. hana::detail::type_at<1, x<0>, x<1>, x<2>>::type,
  27. x<1>
  28. >{}, "");
  29. static_assert(std::is_same<
  30. hana::detail::type_at<1, x<0>, x<1>, x<2>, x<3>>::type,
  31. x<1>
  32. >{}, "");
  33. static_assert(std::is_same<
  34. hana::detail::type_at<2, x<0>, x<1>, x<2>>::type,
  35. x<2>
  36. >{}, "");
  37. static_assert(std::is_same<
  38. hana::detail::type_at<2, x<0>, x<1>, x<2>, x<3>>::type,
  39. x<2>
  40. >{}, "");
  41. static_assert(std::is_same<
  42. hana::detail::type_at<2, x<0>, x<1>, x<2>, x<3>, x<4>>::type,
  43. x<2>
  44. >{}, "");
  45. static_assert(std::is_same<
  46. hana::detail::type_at<3, x<0>, x<1>, x<2>, x<3>>::type,
  47. x<3>
  48. >{}, "");
  49. static_assert(std::is_same<
  50. hana::detail::type_at<3, x<0>, x<1>, x<2>, x<3>, x<4>>::type,
  51. x<3>
  52. >{}, "");
  53. static_assert(std::is_same<
  54. hana::detail::type_at<3, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>>::type,
  55. x<3>
  56. >{}, "");
  57. static_assert(std::is_same<
  58. hana::detail::type_at<4, x<0>, x<1>, x<2>, x<3>, x<4>>::type,
  59. x<4>
  60. >{}, "");
  61. static_assert(std::is_same<
  62. hana::detail::type_at<4, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>>::type,
  63. x<4>
  64. >{}, "");
  65. static_assert(std::is_same<
  66. hana::detail::type_at<4, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>>::type,
  67. x<4>
  68. >{}, "");
  69. static_assert(std::is_same<
  70. hana::detail::type_at<5, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>>::type,
  71. x<5>
  72. >{}, "");
  73. static_assert(std::is_same<
  74. hana::detail::type_at<5, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>>::type,
  75. x<5>
  76. >{}, "");
  77. static_assert(std::is_same<
  78. hana::detail::type_at<5, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>, x<7>>::type,
  79. x<5>
  80. >{}, "");
  81. static_assert(std::is_same<
  82. hana::detail::type_at<6, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>>::type,
  83. x<6>
  84. >{}, "");
  85. static_assert(std::is_same<
  86. hana::detail::type_at<7, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>, x<7>>::type,
  87. x<7>
  88. >{}, "");
  89. int main() { }