#include #include #include #include "test.h" #include fit::static_ > unary_fuse = {}; FIT_STATIC_AUTO unary_fuse_constexpr = fit::fuse_adaptor(); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == fit::fuse(unary_class())(std::make_tuple(3))); FIT_TEST_CHECK(3 == unary_fuse(std::make_tuple(3))); int ifu = 3; FIT_TEST_CHECK(3 == unary_fuse(std::tuple(ifu))); FIT_STATIC_TEST_CHECK(3 == fit::fuse(unary_class())(std::make_tuple(3))); FIT_STATIC_TEST_CHECK(3 == unary_fuse_constexpr(std::make_tuple(3))); } FIT_STATIC_AUTO lambda_unary_fuse = fit::fuse(FIT_STATIC_LAMBDA(int x) { return x; }); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == lambda_unary_fuse(std::make_tuple(3))); } struct unary_move { std::unique_ptr i; unary_move() : i(new int(2)) {} template T operator()(T x) const { return x + *i; } }; fit::static_ > unary_move_fuse = {}; FIT_TEST_CASE() { FIT_TEST_CHECK(3 == fit::fuse(unary_move())(std::make_tuple(1))); FIT_TEST_CHECK(3 == unary_move_fuse(std::make_tuple(1))); }