@@ -10,6 +10,16 @@ TEST_CASE("make_array (variadic arguments)", "[array]") {
1010 CHECK (arr == std::array{1 , 2 , 3 , 4 , 5 });
1111}
1212
13+ TEST_CASE (" make_array (zero case)" , " [array]" ) {
14+ auto arr = stdx::make_array<float >();
15+ STATIC_CHECK (std::is_same_v<decltype (arr), std::array<float , 0 >>);
16+ }
17+
18+ TEST_CASE (" make_array (zero case default)" , " [array]" ) {
19+ auto arr = stdx::make_array ();
20+ STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 0 >>);
21+ }
22+
1323namespace {
1424template <auto I> using V = std::integral_constant<decltype (I), I + 1 >;
1525}
@@ -20,12 +30,24 @@ TEST_CASE("make_array by sequence (template with ::value)", "[array]") {
2030 CHECK (arr == std::array{1 , 2 , 3 , 4 , 5 });
2131}
2232
33+ TEST_CASE (" make_array by sequence - zero case (template with ::value)" ,
34+ " [array]" ) {
35+ auto arr = stdx::make_array<V>(std::make_integer_sequence<int , 0 >{});
36+ STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 0 >>);
37+ }
38+
2339TEST_CASE (" make_array by extent (template with ::value)" , " [array]" ) {
2440 auto arr = stdx::make_array<V, 5 >();
2541 STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 5 >>);
2642 CHECK (arr == std::array{1 , 2 , 3 , 4 , 5 });
2743}
2844
45+ TEST_CASE (" make_array by extent - zero case (template with ::value)" ,
46+ " [array]" ) {
47+ auto arr = stdx::make_array<V, 0 >();
48+ STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 0 >>);
49+ }
50+
2951namespace {
3052struct {
3153 template <auto I> auto operator ()() { return I + 1 ; }
@@ -38,8 +60,20 @@ TEST_CASE("make_array by sequence (factory function template)", "[array]") {
3860 CHECK (arr == std::array{1 , 2 , 3 , 4 , 5 });
3961}
4062
63+ TEST_CASE (" make_array by sequence - zero case (factory function template)" ,
64+ " [array]" ) {
65+ auto arr = stdx::make_array (std::make_integer_sequence<int , 0 >{}, f);
66+ STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 0 >>);
67+ }
68+
4169TEST_CASE (" make_array by extent (factory function template)" , " [array]" ) {
4270 auto arr = stdx::make_array<5 >(f);
4371 STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 5 >>);
4472 CHECK (arr == std::array{1 , 2 , 3 , 4 , 5 });
4573}
74+
75+ TEST_CASE (" make_array by extent - zero case (factory function template)" ,
76+ " [array]" ) {
77+ auto arr = stdx::make_array<0 >(f);
78+ STATIC_CHECK (std::is_same_v<decltype (arr), std::array<int , 0 >>);
79+ }
0 commit comments