| | #include <metal.hpp> |
| |
|
| | #include "example.hpp" |
| |
|
| | HIDE( |
| | |
| | using num = metal::false_; |
| | |
| |
|
| | IS_SAME(metal::is_number<num>, metal::true_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::number<-1>; |
| | |
| |
|
| | IS_SAME(metal::is_number<num>, metal::true_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::number<'a'>; |
| | |
| |
|
| | IS_SAME(metal::is_number<num>, metal::true_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | struct not_a_num : |
| | metal::true_ |
| | {}; |
| | |
| |
|
| | IS_SAME(metal::is_number<not_a_num>, metal::false_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | using not_a_num = std::integral_constant<int, 0>; |
| | |
| |
|
| | IS_SAME(metal::is_number<not_a_num>, metal::false_); |
| | ) |
| |
|
| | HIDE( |
| | |
| | struct one { static const auto value = 1L; }; |
| | enum two { value = 2U }; |
| |
|
| | IS_SAME(metal::is_number<void>, metal::false_); |
| | IS_SAME(metal::is_number<one>, metal::false_); |
| | IS_SAME(metal::is_number<two>, metal::false_); |
| | IS_SAME(metal::is_number<std::integral_constant<short, 42>>, metal::false_); |
| | IS_SAME(metal::is_number<metal::number<-10>>, metal::true_); |
| | IS_SAME(metal::is_number<metal::false_>, metal::true_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | struct one { static const auto value = 1L; }; |
| | enum two { value = 2U }; |
| |
|
| | IS_SAME(metal::as_number<one>, metal::number<1>); |
| | IS_SAME(metal::as_number<two>, metal::number<2>); |
| | IS_SAME(metal::as_number<std::integral_constant<short, 42>>, metal::number<42>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::numbers<>, metal::list<>); |
| |
|
| | IS_SAME( |
| | metal::numbers<'a', 'b'>, |
| | metal::list<metal::number<'a'>, metal::number<'b'>> |
| | ); |
| |
|
| | IS_SAME( |
| | metal::numbers<-7, 5, 1>, |
| | metal::list<metal::number<-7>, metal::number<5>, metal::number<1>> |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::if_<metal::true_, int>, int); |
| | IS_SAME(metal::if_<metal::true_, int, void>, int); |
| | IS_SAME(metal::if_<metal::false_, int, void>, void); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::greater<metal::number<-10>, metal::number<10>>, metal::false_); |
| | IS_SAME(metal::greater<metal::number<10>, metal::number<10>>, metal::false_); |
| | IS_SAME(metal::greater<metal::number<10>, metal::number<-10>>, metal::true_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::less<metal::number<-10>, metal::number<10>>, metal::true_); |
| | IS_SAME(metal::less<metal::number<10>, metal::number<10>>, metal::false_); |
| | IS_SAME(metal::less<metal::number<10>, metal::number<-10>>, metal::false_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::not_<metal::number<0>>, metal::true_); |
| | IS_SAME(metal::not_<metal::number<-10>>, metal::false_); |
| | IS_SAME(metal::not_<metal::number<'a'>>, metal::false_); |
| | IS_SAME(metal::not_<metal::true_>, metal::false_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::and_<>, metal::true_); |
| | IS_SAME(metal::and_<metal::number<0>>, metal::false_); |
| | IS_SAME(metal::and_<metal::number<42>>, metal::true_); |
| | IS_SAME(metal::and_<metal::number<42>, metal::number<0>>, metal::false_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::or_<>, metal::false_); |
| | IS_SAME(metal::or_<metal::number<0>>, metal::false_); |
| | IS_SAME(metal::or_<metal::number<42>>, metal::true_); |
| | IS_SAME(metal::or_<metal::number<42>, metal::number<0>>, metal::true_); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::abs<metal::number<-10>>, metal::number<10>); |
| | IS_SAME(metal::abs<metal::number<0>>, metal::number<0>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::inc<metal::number<-10>>, metal::number<-9>); |
| | IS_SAME(metal::inc<metal::number<0>>, metal::number<1>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::dec<metal::number<-10>>, metal::number<-11>); |
| | IS_SAME(metal::dec<metal::number<0>>, metal::number<-1>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | IS_SAME(metal::neg<metal::number<-10>>, metal::number<10>); |
| | IS_SAME(metal::neg<metal::number<0>>, metal::number<0>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::add<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-9>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::sub<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-25>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::mul<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-255>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::div<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-1>); |
| | IS_SAME( |
| | metal::is_invocable<metal::lambda<metal::div>, num, metal::number<0>>, |
| | metal::false_ |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::mod<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-2>); |
| | IS_SAME( |
| | metal::is_invocable<metal::lambda<metal::mod>, num, metal::number<0>>, |
| | metal::false_ |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::pow<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-2862423051509815793>); |
| | IS_SAME( |
| | metal::is_invocable<metal::lambda<metal::pow>, metal::number<0>, num>, |
| | metal::false_ |
| | ); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::max<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<5>); |
| | |
| | ) |
| |
|
| | HIDE( |
| | |
| | using num = metal::min<metal::number<-17>, metal::number<5>, metal::number<3>>; |
| |
|
| | IS_SAME(num, metal::number<-17>); |
| | |
| | ) |
| |
|