Make sure math::vector,point are trivially default constructible

This commit is contained in:
Nikita Lisitsa 2026-06-30 13:13:05 +03:00
parent 68aedbf2fa
commit aeb0f4a799
3 changed files with 6 additions and 8 deletions

View file

@ -43,6 +43,8 @@ namespace psemek::math::detail
T data[N]; T data[N];
type() = default;
type(dynamic_dimensions<N>){} type(dynamic_dimensions<N>){}
dynamic_dimensions<N> dimensions() const { return {}; } dynamic_dimensions<N> dimensions() const { return {}; }
@ -59,6 +61,8 @@ namespace psemek::math::detail
{ {
static constexpr std::size_t size = 0; static constexpr std::size_t size = 0;
type() = default;
type(dynamic_dimensions<0>){} type(dynamic_dimensions<0>){}
dynamic_dimensions<0> dimensions() const { return {}; } dynamic_dimensions<0> dimensions() const { return {}; }

View file

@ -26,9 +26,7 @@ namespace psemek::math
: coords(dimensions) : coords(dimensions)
{} {}
point() point() = default;
: coords({})
{}
explicit point(std::size_t size) requires (N == dynamic) explicit point(std::size_t size) requires (N == dynamic)
: coords({.size = size}) : coords({.size = size})
@ -37,7 +35,6 @@ namespace psemek::math
template <typename ... Args> template <typename ... Args>
requires(N != dynamic && sizeof...(Args) == N && detail::all_convertible_to<T, Args...>::value) requires(N != dynamic && sizeof...(Args) == N && detail::all_convertible_to<T, Args...>::value)
point(Args && ... args) point(Args && ... args)
: coords({})
{ {
auto out = values().begin(); auto out = values().begin();
((*out++ = args), ...); ((*out++ = args), ...);

View file

@ -29,9 +29,7 @@ namespace psemek::math
: coords(dimensions) : coords(dimensions)
{} {}
vector() vector() = default;
: coords({})
{}
explicit vector(std::size_t size) requires (N == dynamic) explicit vector(std::size_t size) requires (N == dynamic)
: coords({.size = size}) : coords({.size = size})
@ -40,7 +38,6 @@ namespace psemek::math
template <typename ... Args> template <typename ... Args>
requires(N != dynamic && sizeof...(Args) == N && detail::all_convertible_to<T, Args...>::value) requires(N != dynamic && sizeof...(Args) == N && detail::all_convertible_to<T, Args...>::value)
vector(Args && ... args) vector(Args && ... args)
: coords({})
{ {
auto out = values().begin(); auto out = values().begin();
((*out++ = args), ...); ((*out++ = args), ...);