| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 73ce49f commit c07a8b6
8 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,7 +24,7 @@ install: | |||
| 24 | 24 | - conda info -a | |
| 25 | 25 | - conda install gtest cmake -c conda-forge | |
| 26 | 26 | - conda install pytest numpy pybind11==2.2.1 -c conda-forge | |
| 27 | - - conda install xtensor==0.15.8 -c QuantStack | ||
| 27 | + - conda install xtensor==0.16.0 -c QuantStack | ||
| 28 | 28 | - "set PYTHONHOME=%MINICONDA%" | |
| 29 | 29 | - cmake -G "NMake Makefiles" -D CMAKE_INSTALL_PREFIX=%MINICONDA%\\Library -D BUILD_TESTS=ON -D PYTHON_EXECUTABLE=%MINICONDA%\\python.exe . | |
| 30 | 30 | - nmake test_xtensor_python | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -97,7 +97,7 @@ install: | |||
| 97 | 97 | - conda info -a | |
| 98 | 98 | - conda install pytest numpy pybind11==2.2.1 -c conda-forge | |
| 99 | 99 | - conda install cmake gtest -c conda-forge | |
| 100 | - - conda install xtensor==0.15.8 -c QuantStack | ||
| 100 | + - conda install xtensor==0.16.0 -c QuantStack | ||
| 101 | 101 | - cmake -D BUILD_TESTS=ON -D CMAKE_INSTALL_PREFIX=$HOME/miniconda . | |
| 102 | 102 | - make -j2 test_xtensor_python | |
| 103 | 103 | - make install | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -291,8 +291,8 @@ namespace xt | |||
| 291 | 291 | template <class T> | |
| 292 | 292 | struct xcontainer_inner_types<pyarray<T>> | |
| 293 | 293 | { | |
| 294 | - using container_type = xbuffer_adaptor<T*>; | ||
| 295 | - using shape_type = std::vector<typename container_type::size_type>; | ||
| 294 | + using storage_type = xbuffer_adaptor<T*>; | ||
| 295 | + using shape_type = std::vector<typename storage_type::size_type>; | ||
| 296 | 296 | using strides_type = shape_type; | |
| 297 | 297 | using backstrides_type = pyarray_backstrides<pyarray<T>>; | |
| 298 | 298 | using inner_shape_type = xbuffer_adaptor<std::size_t*>; | |
@@ -321,7 +321,7 @@ namespace xt | |||
| 321 | 321 | using self_type = pyarray<T>; | |
| 322 | 322 | using semantic_base = xcontainer_semantic<self_type>; | |
| 323 | 323 | using base_type = pycontainer<self_type>; | |
| 324 | - using container_type = typename base_type::container_type; | ||
| 324 | + using storage_type = typename base_type::storage_type; | ||
| 325 | 325 | using value_type = typename base_type::value_type; | |
| 326 | 326 | using reference = typename base_type::reference; | |
| 327 | 327 | using const_reference = typename base_type::const_reference; | |
@@ -374,7 +374,7 @@ namespace xt | |||
| 374 | 374 | inner_shape_type m_shape; | |
| 375 | 375 | inner_strides_type m_strides; | |
| 376 | 376 | mutable inner_backstrides_type m_backstrides; | |
| 377 | - container_type m_data; | ||
| 377 | + storage_type m_data; | ||
| 378 | 378 | ||
| 379 | 379 | void init_array(const shape_type& shape, const strides_type& strides); | |
| 380 | 380 | void init_from_python(); | |
@@ -383,8 +383,8 @@ namespace xt | |||
| 383 | 383 | const inner_strides_type& strides_impl() const noexcept; | |
| 384 | 384 | const inner_backstrides_type& backstrides_impl() const noexcept; | |
| 385 | 385 | ||
| 386 | - container_type& data_impl() noexcept; | ||
| 387 | - const container_type& data_impl() const noexcept; | ||
| 386 | + storage_type& storage_impl() noexcept; | ||
| 387 | + const storage_type& storage_impl() const noexcept; | ||
| 388 | 388 | ||
| 389 | 389 | friend class xcontainer<pyarray<T>>; | |
| 390 | 390 | friend class pycontainer<pyarray<T>>; | |
@@ -633,7 +633,7 @@ namespace xt | |||
| 633 | 633 | ||
| 634 | 634 | this->m_ptr = tmp.release().ptr(); | |
| 635 | 635 | init_from_python(); | |
| 636 | - std::copy(rhs.data().cbegin(), rhs.data().cend(), this->data().begin()); | ||
| 636 | + std::copy(rhs.storage().cbegin(), rhs.storage().cend(), this->storage().begin()); | ||
| 637 | 637 | } | |
| 638 | 638 | ||
| 639 | 639 | /** | |
@@ -730,8 +730,8 @@ namespace xt | |||
| 730 | 730 | m_strides = inner_strides_type(reinterpret_cast<size_type*>(PyArray_STRIDES(this->python_array())), | |
| 731 | 731 | static_cast<size_type>(PyArray_NDIM(this->python_array()))); | |
| 732 | 732 | m_backstrides = backstrides_type(*this); | |
| 733 | - m_data = container_type(reinterpret_cast<pointer>(PyArray_DATA(this->python_array())), | ||
| 734 | - this->get_min_stride() * static_cast<size_type>(PyArray_SIZE(this->python_array()))); | ||
| 733 | + m_data = storage_type(reinterpret_cast<pointer>(PyArray_DATA(this->python_array())), | ||
| 734 | + this->get_min_stride() * static_cast<size_type>(PyArray_SIZE(this->python_array()))); | ||
| 735 | 735 | } | |
| 736 | 736 | ||
| 737 | 737 | template <class T> | |
@@ -757,13 +757,13 @@ namespace xt | |||
| 757 | 757 | } | |
| 758 | 758 | ||
| 759 | 759 | template <class T> | |
| 760 | - inline auto pyarray<T>::data_impl() noexcept -> container_type& | ||
| 760 | + inline auto pyarray<T>::storage_impl() noexcept -> storage_type& | ||
| 761 | 761 | { | |
| 762 | 762 | return m_data; | |
| 763 | 763 | } | |
| 764 | 764 | ||
| 765 | 765 | template <class T> | |
| 766 | - inline auto pyarray<T>::data_impl() const noexcept -> const container_type& | ||
| 766 | + inline auto pyarray<T>::storage_impl() const noexcept -> const storage_type& | ||
| 767 | 767 | { | |
| 768 | 768 | return m_data; | |
| 769 | 769 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -58,14 +58,14 @@ namespace xt | |||
| 58 | 58 | ||
| 59 | 59 | using base_type = xcontainer<D>; | |
| 60 | 60 | using inner_types = xcontainer_inner_types<D>; | |
| 61 | - using container_type = typename inner_types::container_type; | ||
| 62 | - using value_type = typename container_type::value_type; | ||
| 63 | - using reference = typename container_type::reference; | ||
| 64 | - using const_reference = typename container_type::const_reference; | ||
| 65 | - using pointer = typename container_type::pointer; | ||
| 66 | - using const_pointer = typename container_type::const_pointer; | ||
| 67 | - using size_type = typename container_type::size_type; | ||
| 68 | - using difference_type = typename container_type::difference_type; | ||
| 61 | + using storage_type = typename inner_types::storage_type; | ||
| 62 | + using value_type = typename storage_type::value_type; | ||
| 63 | + using reference = typename storage_type::reference; | ||
| 64 | + using const_reference = typename storage_type::const_reference; | ||
| 65 | + using pointer = typename storage_type::pointer; | ||
| 66 | + using const_pointer = typename storage_type::const_pointer; | ||
| 67 | + using size_type = typename storage_type::size_type; | ||
| 68 | + using difference_type = typename storage_type::difference_type; | ||
| 69 | 69 | ||
| 70 | 70 | using shape_type = typename inner_types::shape_type; | |
| 71 | 71 | using strides_type = typename inner_types::strides_type; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -110,7 +110,7 @@ namespace xt | |||
| 110 | 110 | template <class T, std::size_t N> | |
| 111 | 111 | struct xcontainer_inner_types<pytensor<T, N>> | |
| 112 | 112 | { | |
| 113 | - using container_type = xbuffer_adaptor<T*>; | ||
| 113 | + using storage_type = xbuffer_adaptor<T*>; | ||
| 114 | 114 | using shape_type = std::array<npy_intp, N>; | |
| 115 | 115 | using strides_type = shape_type; | |
| 116 | 116 | using backstrides_type = shape_type; | |
@@ -144,7 +144,7 @@ namespace xt | |||
| 144 | 144 | using self_type = pytensor<T, N>; | |
| 145 | 145 | using semantic_base = xcontainer_semantic<self_type>; | |
| 146 | 146 | using base_type = pycontainer<self_type>; | |
| 147 | - using container_type = typename base_type::container_type; | ||
| 147 | + using storage_type = typename base_type::storage_type; | ||
| 148 | 148 | using value_type = typename base_type::value_type; | |
| 149 | 149 | using reference = typename base_type::reference; | |
| 150 | 150 | using const_reference = typename base_type::const_reference; | |
@@ -191,7 +191,7 @@ namespace xt | |||
| 191 | 191 | inner_shape_type m_shape; | |
| 192 | 192 | inner_strides_type m_strides; | |
| 193 | 193 | inner_backstrides_type m_backstrides; | |
| 194 | - container_type m_data; | ||
| 194 | + storage_type m_data; | ||
| 195 | 195 | ||
| 196 | 196 | void init_tensor(const shape_type& shape, const strides_type& strides); | |
| 197 | 197 | void init_from_python(); | |
@@ -203,8 +203,8 @@ namespace xt | |||
| 203 | 203 | inner_backstrides_type& backstrides_impl() noexcept; | |
| 204 | 204 | const inner_backstrides_type& backstrides_impl() const noexcept; | |
| 205 | 205 | ||
| 206 | - container_type& data_impl() noexcept; | ||
| 207 | - const container_type& data_impl() const noexcept; | ||
| 206 | + storage_type& storage_impl() noexcept; | ||
| 207 | + const storage_type& storage_impl() const noexcept; | ||
| 208 | 208 | ||
| 209 | 209 | friend class xcontainer<pytensor<T, N>>; | |
| 210 | 210 | friend class pycontainer<pytensor<T, N>>; | |
@@ -334,7 +334,7 @@ namespace xt | |||
| 334 | 334 | : base_type() | |
| 335 | 335 | { | |
| 336 | 336 | init_tensor(rhs.shape(), rhs.strides()); | |
| 337 | - std::copy(rhs.data().cbegin(), rhs.data().cend(), this->data().begin()); | ||
| 337 | + std::copy(rhs.storage().cbegin(), rhs.storage().cend(), this->storage().begin()); | ||
| 338 | 338 | } | |
| 339 | 339 | ||
| 340 | 340 | /** | |
@@ -417,8 +417,8 @@ namespace xt | |||
| 417 | 417 | m_shape = shape; | |
| 418 | 418 | m_strides = strides; | |
| 419 | 419 | adapt_strides(m_shape, m_strides, m_backstrides); | |
| 420 | - m_data = container_type(reinterpret_cast<pointer>(PyArray_DATA(this->python_array())), | ||
| 421 | - static_cast<size_type>(PyArray_SIZE(this->python_array()))); | ||
| 420 | + m_data = storage_type(reinterpret_cast<pointer>(PyArray_DATA(this->python_array())), | ||
| 421 | + static_cast<size_type>(PyArray_SIZE(this->python_array()))); | ||
| 422 | 422 | } | |
| 423 | 423 | ||
| 424 | 424 | template <class T, std::size_t N> | |
@@ -433,8 +433,8 @@ namespace xt | |||
| 433 | 433 | std::transform(PyArray_STRIDES(this->python_array()), PyArray_STRIDES(this->python_array()) + N, m_strides.begin(), | |
| 434 | 434 | [](auto v) { return v / sizeof(T); }); | |
| 435 | 435 | adapt_strides(m_shape, m_strides, m_backstrides); | |
| 436 | - m_data = container_type(reinterpret_cast<pointer>(PyArray_DATA(this->python_array())), | ||
| 437 | - this->get_min_stride() * static_cast<size_type>(PyArray_SIZE(this->python_array()))); | ||
| 436 | + m_data = storage_type(reinterpret_cast<pointer>(PyArray_DATA(this->python_array())), | ||
| 437 | + this->get_min_stride() * static_cast<size_type>(PyArray_SIZE(this->python_array()))); | ||
| 438 | 438 | } | |
| 439 | 439 | ||
| 440 | 440 | template <class T, std::size_t N> | |
@@ -474,13 +474,13 @@ namespace xt | |||
| 474 | 474 | } | |
| 475 | 475 | ||
| 476 | 476 | template <class T, std::size_t N> | |
| 477 | - inline auto pytensor<T, N>::data_impl() noexcept -> container_type& | ||
| 477 | + inline auto pytensor<T, N>::storage_impl() noexcept -> storage_type& | ||
| 478 | 478 | { | |
| 479 | 479 | return m_data; | |
| 480 | 480 | } | |
| 481 | 481 | ||
| 482 | 482 | template <class T, std::size_t N> | |
| 483 | - inline auto pytensor<T, N>::data_impl() const noexcept -> const container_type& | ||
| 483 | + inline auto pytensor<T, N>::storage_impl() const noexcept -> const storage_type& | ||
| 484 | 484 | { | |
| 485 | 485 | return m_data; | |
| 486 | 486 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -234,15 +234,15 @@ namespace xt | |||
| 234 | 234 | vec.resize(rm.shape(), layout_type::row_major); | |
| 235 | 235 | ||
| 236 | 236 | assign_array(vec, rm.m_assigner); | |
| 237 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), rm.m_data.cbegin())); | ||
| 237 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), rm.m_data.cbegin())); | ||
| 238 | 238 | ||
| 239 | 239 | auto vec_copy = vec; | |
| 240 | 240 | ||
| 241 | 241 | shape_type shape_new(rm.shape()); | |
| 242 | 242 | auto vt = transpose(vec); | |
| 243 | 243 | std::reverse(shape_new.begin(), shape_new.end()); | |
| 244 | 244 | EXPECT_EQ(vt.shape(), shape_new); | |
| 245 | - EXPECT_TRUE(std::equal(vt.data().cbegin(), vt.data().cend(), rm.m_data.cbegin())); | ||
| 245 | + EXPECT_TRUE(std::equal(vt.storage().cbegin(), vt.storage().cend(), rm.m_data.cbegin())); | ||
| 246 | 246 | ||
| 247 | 247 | strides_type new_strides = {rm.m_strides[2], | |
| 248 | 248 | rm.m_strides[1], | |
@@ -266,7 +266,7 @@ namespace xt | |||
| 266 | 266 | vec.resize(rm.shape(), layout_type::row_major); | |
| 267 | 267 | ||
| 268 | 268 | assign_array(vec, rm.m_assigner); | |
| 269 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), rm.m_data.cbegin())); | ||
| 269 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), rm.m_data.cbegin())); | ||
| 270 | 270 | ||
| 271 | 271 | auto vec_copy = vec; | |
| 272 | 272 | ||
@@ -275,7 +275,7 @@ namespace xt | |||
| 275 | 275 | auto vt = transpose(vec, {1, 0, 2}); | |
| 276 | 276 | shape_type shape_new = {a[1], a[0], a[2]}; | |
| 277 | 277 | EXPECT_TRUE(std::equal(vt.shape().cbegin(), vt.shape().cend(), shape_new.begin())); | |
| 278 | - EXPECT_TRUE(std::equal(vt.data().cbegin(), vt.data().cend(), rm.m_data.cbegin())); | ||
| 278 | + EXPECT_TRUE(std::equal(vt.storage().cbegin(), vt.storage().cend(), rm.m_data.cbegin())); | ||
| 279 | 279 | ||
| 280 | 280 | strides_type new_strides = {rm.m_strides[1], | |
| 281 | 281 | rm.m_strides[0], | |
@@ -342,7 +342,7 @@ namespace xt | |||
| 342 | 342 | row_major_result<C> rm; | |
| 343 | 343 | vec.resize(rm.m_shape, layout_type::row_major); | |
| 344 | 344 | assign_array(vec, rm.m_assigner); | |
| 345 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), rm.m_data.cbegin())); | ||
| 345 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), rm.m_data.cbegin())); | ||
| 346 | 346 | EXPECT_EQ(vec(0, 1, 1), vec(1, 1)); | |
| 347 | 347 | EXPECT_EQ(vec(2, 1, 3), vec(2, 2, 2, 1, 3)); | |
| 348 | 348 | test_bound_check(vec); | |
@@ -353,7 +353,7 @@ namespace xt | |||
| 353 | 353 | column_major_result<C> cm; | |
| 354 | 354 | vec.resize(cm.m_shape, layout_type::column_major); | |
| 355 | 355 | assign_array(vec, cm.m_assigner); | |
| 356 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), cm.m_data.cbegin())); | ||
| 356 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), cm.m_data.cbegin())); | ||
| 357 | 357 | EXPECT_EQ(vec(0, 1, 1), vec(1, 1)); | |
| 358 | 358 | EXPECT_EQ(vec(2, 1, 3), vec(2, 2, 2, 1, 3)); | |
| 359 | 359 | test_bound_check(vec); | |
@@ -364,7 +364,7 @@ namespace xt | |||
| 364 | 364 | central_major_result<C> cem; | |
| 365 | 365 | vec.resize(cem.m_shape, cem.m_strides); | |
| 366 | 366 | assign_array(vec, cem.m_assigner); | |
| 367 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), cem.m_data.cbegin())); | ||
| 367 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), cem.m_data.cbegin())); | ||
| 368 | 368 | EXPECT_EQ(vec(0, 1, 1), vec(1, 1)); | |
| 369 | 369 | EXPECT_EQ(vec(2, 1, 3), vec(2, 2, 2, 1, 3)); | |
| 370 | 370 | test_bound_check(vec); | |
@@ -375,7 +375,7 @@ namespace xt | |||
| 375 | 375 | unit_shape_result<C> usr; | |
| 376 | 376 | vec.resize(usr.m_shape, layout_type::row_major); | |
| 377 | 377 | assign_array(vec, usr.m_assigner); | |
| 378 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), usr.m_data.cbegin())); | ||
| 378 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), usr.m_data.cbegin())); | ||
| 379 | 379 | EXPECT_EQ(vec(0, 1, 0), vec(1, 0)); | |
| 380 | 380 | EXPECT_EQ(vec(2, 0, 3), vec(2, 2, 2, 0, 3)); | |
| 381 | 381 | test_bound_check(vec); | |
@@ -475,7 +475,7 @@ namespace xt | |||
| 475 | 475 | row_major_result<C> rm; | |
| 476 | 476 | vec.resize(rm.m_shape, layout_type::row_major); | |
| 477 | 477 | indexed_assign_array(vec, rm.m_assigner); | |
| 478 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), rm.m_data.cbegin())); | ||
| 478 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), rm.m_data.cbegin())); | ||
| 479 | 479 | EXPECT_EQ(vec(0, 1, 1), vec[index1]); | |
| 480 | 480 | EXPECT_EQ(vec(2, 1, 3), vec[index2]); | |
| 481 | 481 | } | |
@@ -485,7 +485,7 @@ namespace xt | |||
| 485 | 485 | column_major_result<C> cm; | |
| 486 | 486 | vec.resize(cm.m_shape, layout_type::column_major); | |
| 487 | 487 | indexed_assign_array(vec, cm.m_assigner); | |
| 488 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), cm.m_data.cbegin())); | ||
| 488 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), cm.m_data.cbegin())); | ||
| 489 | 489 | EXPECT_EQ(vec(0, 1, 1), vec[index1]); | |
| 490 | 490 | EXPECT_EQ(vec(2, 1, 3), vec[index2]); | |
| 491 | 491 | } | |
@@ -495,7 +495,7 @@ namespace xt | |||
| 495 | 495 | central_major_result<C> cem; | |
| 496 | 496 | vec.resize(cem.m_shape, cem.m_strides); | |
| 497 | 497 | indexed_assign_array(vec, cem.m_assigner); | |
| 498 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), cem.m_data.cbegin())); | ||
| 498 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), cem.m_data.cbegin())); | ||
| 499 | 499 | EXPECT_EQ(vec(0, 1, 1), vec[index1]); | |
| 500 | 500 | EXPECT_EQ(vec(2, 1, 3), vec[index2]); | |
| 501 | 501 | } | |
@@ -505,7 +505,7 @@ namespace xt | |||
| 505 | 505 | unit_shape_result<C> usr; | |
| 506 | 506 | vec.resize(usr.m_shape, layout_type::row_major); | |
| 507 | 507 | indexed_assign_array(vec, usr.m_assigner); | |
| 508 | - EXPECT_TRUE(std::equal(vec.data().cbegin(), vec.data().cend(), usr.m_data.cbegin())); | ||
| 508 | + EXPECT_TRUE(std::equal(vec.storage().cbegin(), vec.storage().cend(), usr.m_data.cbegin())); | ||
| 509 | 509 | xindex id1 = {1, 0}; | |
| 510 | 510 | xindex id2 = {2, 2, 2, 0, 3}; | |
| 511 | 511 | EXPECT_EQ(vec(0, 1, 0), vec[id1]); | |
@@ -580,7 +580,7 @@ namespace xt | |||
| 580 | 580 | row_major_result<C> rm; | |
| 581 | 581 | vecrm.resize(rm.m_shape, layout_type::row_major); | |
| 582 | 582 | std::copy(rm.data().cbegin(), rm.data().cend(), vecrm.template begin<layout_type::row_major>()); | |
| 583 | - EXPECT_TRUE(std::equal(rm.data().cbegin(), rm.data().cend(), vecrm.data().cbegin())); | ||
| 583 | + EXPECT_TRUE(std::equal(rm.data().cbegin(), rm.data().cend(), vecrm.storage().cbegin())); | ||
| 584 | 584 | //EXPECT_EQ(vecrm.template end<layout_type::row_major>(), vecrm.data().end()); | |
| 585 | 585 | } | |
| 586 | 586 | ||
@@ -589,7 +589,7 @@ namespace xt | |||
| 589 | 589 | column_major_result<C> cm; | |
| 590 | 590 | veccm.resize(cm.m_shape, layout_type::column_major); | |
| 591 | 591 | std::copy(cm.data().cbegin(), cm.data().cend(), veccm.template begin<layout_type::column_major>()); | |
| 592 | - EXPECT_TRUE(std::equal(cm.data().cbegin(), cm.data().cend(), veccm.data().cbegin())); | ||
| 592 | + EXPECT_TRUE(std::equal(cm.data().cbegin(), cm.data().cend(), veccm.storage().cbegin())); | ||
| 593 | 593 | //EXPECT_EQ(veccm.template end<layout_type::column_major>(), veccm.data().end()); | |
| 594 | 594 | } | |
| 595 | 595 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments