| | #include <metal.hpp> |
| |
|
| | #include <map> |
| | #include <tuple> |
| | #include <utility> |
| |
|
| | #include "example.hpp" |
| |
|
| | HIDE( |
| | |
| | using m = metal::list<>; |
| | |
| |
|
| | IS_SAME(metal::is_map<m>, metal::true_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::list< |
| | metal::list<int, long>, |
| | metal::list<float, double> |
| | >; |
| | |
| |
|
| | IS_SAME(metal::is_map<m>, metal::true_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using not_a_map = metal::list< |
| | metal::list<int, int*>, |
| | metal::list<int, int&> |
| | >; |
| | |
| |
|
| | IS_SAME(metal::is_map<not_a_map>, metal::false_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using not_a_map = metal::list< |
| | metal::list<int>, |
| | metal::list<int, int&> |
| | >; |
| | |
| |
|
| | IS_SAME(metal::is_map<not_a_map>, metal::false_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME(metal::is_map<m>, metal::true_); |
| | IS_SAME(metal::is_map<metal::list<>>, metal::true_); |
| | IS_SAME(metal::is_map<metal::pair<int, int*>>, metal::false_); |
| | IS_SAME(metal::is_map<std::map<char, int>>, metal::false_); |
| | IS_SAME(metal::is_map<void>, metal::false_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | template<class...> struct a {}; |
| | template<class...> struct b {}; |
| | template<class...> struct c {}; |
| |
|
| | IS_SAME( |
| | metal::as_map<a<b<int, int*>, c<char, char*>>>, |
| | metal::map<metal::pair<int, int*>, metal::pair<char, char*>> |
| | ); |
| |
|
| | IS_SAME( |
| | metal::as_map<std::tuple<std::pair<int, int*>, std::pair<char, char*>>>, |
| | metal::map<metal::pair<int, int*>, metal::pair<char, char*>> |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME(metal::order<m, int>, metal::number<0>); |
| | IS_SAME(metal::order<m, char>, metal::number<1>); |
| | IS_SAME(metal::order<m, float>, metal::number<2>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME(metal::has_key<m, int>, metal::true_); |
| | IS_SAME(metal::has_key<m, char>, metal::true_); |
| | IS_SAME(metal::has_key<m, float>, metal::true_); |
| | IS_SAME(metal::has_key<m, void>, metal::false_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME(metal::at_key<m, int>, metal::number<sizeof(int)>); |
| | IS_SAME(metal::at_key<m, char>, metal::number<sizeof(char)>); |
| | IS_SAME(metal::at_key<m, float>, metal::number<sizeof(float)>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME( |
| | metal::insert_key<m, void, metal::number<0>>, |
| | metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>>, |
| | metal::pair<void, metal::number<0>> |
| | > |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME( |
| | metal::erase_key<m, int>, |
| | metal::map< |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | > |
| | ); |
| |
|
| | IS_SAME( |
| | metal::erase_key<m, char>, |
| | metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | > |
| | ); |
| |
|
| | IS_SAME( |
| | metal::erase_key<m, float>, |
| | metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>> |
| | > |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME(metal::keys<m>, metal::list<int, char, float>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using m = metal::map< |
| | metal::pair<int, metal::number<sizeof(int)>>, |
| | metal::pair<char, metal::number<sizeof(char)>>, |
| | metal::pair<float, metal::number<sizeof(float)>> |
| | >; |
| |
|
| | IS_SAME( |
| | metal::values<m>, |
| | metal::numbers<sizeof(int), sizeof(char), sizeof(float)> |
| | ); |
| | |
| | ) |
| |
|