diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-15 20:30:23 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-15 20:45:52 +0100 |
commit | 665cdfa050c60eda11183b57c4e176dfd5b8a6d6 (patch) | |
tree | f90f33d85a64cba5824abfe433a4a8d7d8bcd685 /test | |
parent | c3609dd4993e67268e7799083ebc8b3fc4f28044 (diff) |
entity: more metaprogramming
Diffstat (limited to 'test')
-rw-r--r-- | test/entity.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/test/entity.cpp b/test/entity.cpp index 01d8a28c..838d18cd 100644 --- a/test/entity.cpp +++ b/test/entity.cpp @@ -75,13 +75,22 @@ namespace type_tests { using namespace floormat::entities::detail; template<typename T, typename U> using common_type2 = std::common_type_t<T, U>; -static_assert(std::is_same_v<long long, detail::reduce<common_type2, parameter_pack<char, unsigned short, short, long long>>>); -static_assert(std::is_same_v<detail::parameter_pack<unsigned char, unsigned short, unsigned int>, - detail::map<std::make_unsigned_t, detail::parameter_pack<char, short, int>>>); +static_assert(std::is_same_v<long long, reduce<common_type2, parameter_pack<char, unsigned short, short, long long>>>); +static_assert(std::is_same_v<parameter_pack<unsigned char, unsigned short, unsigned int>, + map<std::make_unsigned_t, parameter_pack<char, short, int>>>); + +static_assert(std::is_same_v<parameter_pack<unsigned char, unsigned short, unsigned, unsigned long>, + map<std::make_unsigned_t, parameter_pack<char, short, int, long>>>); +static_assert(std::is_same_v<std::tuple<int, short, char>, lift<parameter_pack<short, char>, std::tuple, int>>); +static_assert(std::is_same_v<parameter_pack<long, long long>, + skip<3, std::tuple<char, short, int, long, long long>>>); +static_assert(std::is_same_v<parameter_pack<char, short, int>, + take<3, std::tuple<char, short, int, float, double, long double>>>); +static_assert(std::is_same_v<int, nth<2, parameter_pack<char, short, int, long, long long>>>); + +static_assert(std::is_same_v<parameter_pack<char, short, long, float>, + except_nth<2, parameter_pack<char, short, int, long, float>>>); -static_assert(std::is_same_v<detail::parameter_pack<unsigned char, unsigned short, unsigned, unsigned long>, - detail::map<std::make_unsigned_t, detail::parameter_pack<char, short, int, long>>>); -static_assert(std::is_same_v<std::tuple<int, short, char>, detail::lift<detail::parameter_pack<short, char>, std::tuple, int>>); } // namespace type_tests } // namespace floormat |