#include #include "test.h" #include #include #include #include template struct ac { T value; constexpr ac(T i) : value(i) {} }; FIT_TEST_CASE() { auto v = fit::construct>()(5, 5); FIT_TEST_CHECK(v.size() == 5); FIT_TEST_CHECK(v == std::vector{5, 5, 5, 5, 5}); } FIT_TEST_CASE() { auto v = fit::construct>()({5, 5, 5, 5, 5}); FIT_TEST_CHECK(v.size() == 5); FIT_TEST_CHECK(v == std::vector{5, 5, 5, 5, 5}); } FIT_TEST_CASE() { auto t = fit::construct()(1, 2, 3); static_assert(std::is_same, decltype(t)>::value, ""); FIT_TEST_CHECK(t == std::make_tuple(1, 2, 3)); // GCC 4.7 doesn't have fully constexpr tuple #if defined(__GNUC__) && !defined (__clang__) && __GNUC__ == 4 && __GNUC_MINOR__ > 7 FIT_STATIC_TEST_CHECK(std::make_tuple(1, 2, 3) == fit::construct()(1, 2, 3)); #endif } FIT_TEST_CASE() { auto t = fit::construct()(1, 2); static_assert(std::is_same, decltype(t)>::value, ""); FIT_TEST_CHECK(t == std::make_pair(1, 2)); // GCC 4.7 doesn't have fully constexpr pair #if defined(__GNUC__) && !defined (__clang__) && __GNUC__ == 4 && __GNUC_MINOR__ > 7 FIT_STATIC_TEST_CHECK(std::make_pair(1, 2) == fit::construct()(1, 2)); #endif } FIT_TEST_CASE() { auto f = fit::conditional(fit::construct(), fit::identity); FIT_TEST_CHECK(f(1, 2) == std::make_pair(1, 2)); FIT_TEST_CHECK(f(1) == 1); } FIT_TEST_CASE() { auto x = fit::construct()(1); static_assert(std::is_same, decltype(x)>::value, ""); FIT_TEST_CHECK(x.value == ac(1).value); FIT_STATIC_TEST_CHECK(ac(1).value == fit::construct()(1).value); }