#include #include #include #include #include "test.hpp" struct sum_f { template constexpr T operator()(T x, U y) const { return x+y; } }; static constexpr fit::infix_adaptor sum = {}; FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); FIT_STATIC_TEST_CHECK(3 == (1 2)); FIT_TEST_CHECK(3 == (sum(1, 2))); FIT_STATIC_TEST_CHECK(3 == (sum(1, 2))); } FIT_STATIC_FUNCTION(sum1) = fit::infix(sum_f()); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); FIT_STATIC_TEST_CHECK(3 == (1 2)); FIT_TEST_CHECK(3 == (sum1(1, 2))); FIT_STATIC_TEST_CHECK(3 == (sum1(1, 2))); } FIT_STATIC_LAMBDA_FUNCTION(sum2) = fit::infix([](int x, int y) { return x + y; }); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); FIT_TEST_CHECK(3 == (sum2(1, 2))); } FIT_STATIC_FUNCTION(sum3) = fit::infix(fit::_ + fit::_); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); FIT_STATIC_TEST_CHECK(3 == (1 2)); FIT_TEST_CHECK(3 == (sum3(1, 2))); FIT_STATIC_TEST_CHECK(3 == (sum3(1, 2))); } FIT_STATIC_LAMBDA_FUNCTION(sum4) = fit::infix(fit::infix([](int x, int y) { return x + y; })); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); FIT_TEST_CHECK(3 == (sum4(1, 2))); } FIT_STATIC_FUNCTION(sum5) = fit::infix(fit::infix(fit::_ + fit::_)); FIT_TEST_CASE() { FIT_TEST_CHECK(3 == (1 2)); FIT_STATIC_TEST_CHECK(3 == (1 2)); FIT_TEST_CHECK(3 == (sum5(1, 2))); FIT_STATIC_TEST_CHECK(3 == (sum5(1, 2))); }