#include #include #include TEST_CASE("make_array (variadic arguments)", "[array]") { auto arr = stdx::make_array(1, 2, 3, 4, 5); STATIC_CHECK(std::is_same_v>); CHECK(arr == std::array{1, 2, 3, 4, 5}); } TEST_CASE("make_array (zero case)", "[array]") { auto arr = stdx::make_array(); STATIC_CHECK(std::is_same_v>); } TEST_CASE("make_array (zero case default)", "[array]") { auto arr = stdx::make_array(); STATIC_CHECK(std::is_same_v>); } namespace { template using V = std::integral_constant; } TEST_CASE("make_array by sequence (template with ::value)", "[array]") { auto arr = stdx::make_array(std::make_integer_sequence{}); STATIC_CHECK(std::is_same_v>); CHECK(arr == std::array{1, 2, 3, 4, 5}); } TEST_CASE("make_array by sequence - zero case (template with ::value)", "[array]") { auto arr = stdx::make_array(std::make_integer_sequence{}); STATIC_CHECK(std::is_same_v>); } TEST_CASE("make_array by extent (template with ::value)", "[array]") { auto arr = stdx::make_array(); STATIC_CHECK(std::is_same_v>); CHECK(arr == std::array{1, 2, 3, 4, 5}); } TEST_CASE("make_array by extent - zero case (template with ::value)", "[array]") { auto arr = stdx::make_array(); STATIC_CHECK(std::is_same_v>); } namespace { struct { template auto operator()() { return I + 1; } } f; } // namespace TEST_CASE("make_array by sequence (factory function template)", "[array]") { auto arr = stdx::make_array(std::make_integer_sequence{}, f); STATIC_CHECK(std::is_same_v>); CHECK(arr == std::array{1, 2, 3, 4, 5}); } TEST_CASE("make_array by sequence - zero case (factory function template)", "[array]") { auto arr = stdx::make_array(std::make_integer_sequence{}, f); STATIC_CHECK(std::is_same_v>); } TEST_CASE("make_array by extent (factory function template)", "[array]") { auto arr = stdx::make_array<5>(f); STATIC_CHECK(std::is_same_v>); CHECK(arr == std::array{1, 2, 3, 4, 5}); } TEST_CASE("make_array by extent - zero case (factory function template)", "[array]") { auto arr = stdx::make_array<0>(f); STATIC_CHECK(std::is_same_v>); }