diff --git a/source/blender/blenlib/BLI_array.hh b/source/blender/blenlib/BLI_array.hh index c7a9c49c972..c411fc50f15 100644 --- a/source/blender/blenlib/BLI_array.hh +++ b/source/blender/blenlib/BLI_array.hh @@ -105,6 +105,10 @@ class Array { { } + Array(const std::initializer_list &values) : Array(Span(values)) + { + } + /** * Create a new array with the given size. All values will be default constructed. For trivial * types like int, default construction does nothing. diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh index df885588d9b..1fe38464ad0 100644 --- a/source/blender/blenlib/BLI_vector.hh +++ b/source/blender/blenlib/BLI_vector.hh @@ -167,6 +167,10 @@ class Vector { { } + Vector(const std::initializer_list &values) : Vector(Span(values)) + { + } + template> * = nullptr> diff --git a/tests/gtests/blenlib/BLI_span_test.cc b/tests/gtests/blenlib/BLI_span_test.cc index ed3cce6d2cf..cb1a8b9b6f9 100644 --- a/tests/gtests/blenlib/BLI_span_test.cc +++ b/tests/gtests/blenlib/BLI_span_test.cc @@ -285,4 +285,14 @@ TEST(span, CastLargerSize) EXPECT_EQ(new_a_span.size(), 2u); } +TEST(span, VoidPointerSpan) +{ + int a; + float b; + double c; + + auto func1 = [](Span span) { EXPECT_EQ(span.size(), 3); }; + func1({&a, &b, &c}); +} + } // namespace blender diff --git a/tests/gtests/blenlib/BLI_vector_test.cc b/tests/gtests/blenlib/BLI_vector_test.cc index 92fb12fb4e5..a020611aed6 100644 --- a/tests/gtests/blenlib/BLI_vector_test.cc +++ b/tests/gtests/blenlib/BLI_vector_test.cc @@ -651,4 +651,13 @@ TEST(vector, OveralignedValues) } } +TEST(vector, ConstructVoidPointerVector) +{ + int a; + float b; + double c; + Vector vec = {&a, &b, &c}; + EXPECT_EQ(vec.size(), 3); +} + } // namespace blender diff --git a/tests/gtests/functions/FN_attributes_ref_test.cc b/tests/gtests/functions/FN_attributes_ref_test.cc index fee8c5dc058..1c05bb930db 100644 --- a/tests/gtests/functions/FN_attributes_ref_test.cc +++ b/tests/gtests/functions/FN_attributes_ref_test.cc @@ -65,8 +65,7 @@ TEST(mutable_attributes_ref, ComplexTest) Array sizes(amount); Array names(amount); - Array buffers = { - (void *)positions.data(), (void *)ids.data(), (void *)sizes.data(), (void *)names.data()}; + Array buffers = {positions.data(), ids.data(), sizes.data(), names.data()}; MutableAttributesRef attributes{info, buffers, IndexRange(1, 3)}; EXPECT_EQ(attributes.size(), 3); EXPECT_EQ(attributes.info().size(), 4); diff --git a/tests/gtests/functions/FN_multi_function_test.cc b/tests/gtests/functions/FN_multi_function_test.cc index 2544f1c63b0..8cc8f91a300 100644 --- a/tests/gtests/functions/FN_multi_function_test.cc +++ b/tests/gtests/functions/FN_multi_function_test.cc @@ -369,7 +369,7 @@ TEST(multi_function, CustomMF_Convert) CustomMF_Convert fn; Array inputs = {5.4f, 7.1f, 9.0f}; - Array outputs{inputs.size(), 0}; + Array outputs(inputs.size(), 0); MFParamsBuilder params(fn, inputs.size()); params.add_readonly_single_input(inputs.as_span());