| @@ -102,22 +102,20 @@ public: | |||||
| typedef array<T...> super; | typedef array<T...> super; | ||||
| typedef typename super::element_t element_t; | typedef typename super::element_t element_t; | ||||
| inline arraynd() | |||||
| { | |||||
| } | |||||
| inline arraynd() = default; | |||||
| inline arraynd(vec_t<ptrdiff_t, N> sizes, element_t e = element_t()) | inline arraynd(vec_t<ptrdiff_t, N> sizes, element_t e = element_t()) | ||||
| : m_sizes(sizes) | : m_sizes(sizes) | ||||
| { | { | ||||
| fix_sizes(e); | |||||
| resize_data(e); | |||||
| } | } | ||||
| /* Additional constructor if ptrdiff_t != int */ | /* Additional constructor if ptrdiff_t != int */ | ||||
| template<typename T2 = int, typename T3 = typename std::enable_if<!std::is_same<ptrdiff_t, T2>::value, int>::type> | template<typename T2 = int, typename T3 = typename std::enable_if<!std::is_same<ptrdiff_t, T2>::value, int>::type> | ||||
| inline arraynd(vec_t<T2, N> sizes, element_t e = element_t()) | inline arraynd(vec_t<T2, N> sizes, element_t e = element_t()) | ||||
| : m_sizes(vec_t<ptrdiff_t, N>(sizes)) | |||||
| { | { | ||||
| m_sizes = vec_t<ptrdiff_t, N>(sizes); | |||||
| fix_sizes(e); | |||||
| resize_data(e); | |||||
| } | } | ||||
| inline arraynd(std::initializer_list<arraynd_initializer<element_t, N - 1> > initializer) | inline arraynd(std::initializer_list<arraynd_initializer<element_t, N - 1> > initializer) | ||||
| @@ -127,7 +125,7 @@ public: | |||||
| for (auto inner_initializer : initializer) | for (auto inner_initializer : initializer) | ||||
| inner_initializer.fill_sizes(&m_sizes[N - 2]); | inner_initializer.fill_sizes(&m_sizes[N - 2]); | ||||
| fix_sizes(); | |||||
| resize_data(); | |||||
| int pos = 0; | int pos = 0; | ||||
| @@ -240,7 +238,7 @@ public: | |||||
| inline void resize_s(vec_t<ptrdiff_t, N> sizes, element_t e = element_t()) | inline void resize_s(vec_t<ptrdiff_t, N> sizes, element_t e = element_t()) | ||||
| { | { | ||||
| m_sizes = sizes; | m_sizes = sizes; | ||||
| fix_sizes(e); | |||||
| resize_data(e); | |||||
| } | } | ||||
| inline vec_t<int, N> size() const | inline vec_t<int, N> size() const | ||||
| @@ -262,7 +260,7 @@ public: | |||||
| inline ptrdiff_t bytes_s() const { return super::bytes_s(); } | inline ptrdiff_t bytes_s() const { return super::bytes_s(); } | ||||
| private: | private: | ||||
| inline void fix_sizes(element_t e = element_t()) | |||||
| inline void resize_data(element_t e = element_t()) | |||||
| { | { | ||||
| ptrdiff_t total_size = 1; | ptrdiff_t total_size = 1; | ||||
| @@ -274,7 +272,7 @@ private: | |||||
| this->array<T...>::resize(total_size, e); | this->array<T...>::resize(total_size, e); | ||||
| } | } | ||||
| vec_t<ptrdiff_t, N> m_sizes; | |||||
| vec_t<ptrdiff_t, N> m_sizes { 0 }; | |||||
| }; | }; | ||||
| template<typename... T> using array2d = arraynd<2, T...>; | template<typename... T> using array2d = arraynd<2, T...>; | ||||