From d19a44bcb53cebbee0ae51981f66b93b31cb9dcb Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 7 Oct 2022 21:38:42 +0200 Subject: a --- src/tile-iterator.hpp | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'src/tile-iterator.hpp') diff --git a/src/tile-iterator.hpp b/src/tile-iterator.hpp index 99a40412..0cd6d616 100644 --- a/src/tile-iterator.hpp +++ b/src/tile-iterator.hpp @@ -40,32 +40,26 @@ public: basic_tile_iterator& operator=(const basic_tile_iterator&) = default; basic_tile_iterator& operator++() { pos++; return *this; } - basic_tile_iterator operator++(int) { auto tmp = *this; operator++(); return tmp; } + basic_tile_iterator operator++(int) { auto tmp = *this; operator++(); return tmp; } basic_tile_iterator* operator->() { return this; } basic_tile_iterator& operator*() { return *this; } auto operator<=>(const basic_tile_iterator&) const noexcept = default; - void swap(basic_tile_iterator& other) { - using std::swap; - swap(ptr, other.ptr); - swap(pos, other.pos); - } + void swap(basic_tile_iterator& other); template - typename std::tuple_element>::type get() - { - if constexpr(N == 0) - return pos == TILE_COUNT ? ptr[0] : ptr[pos]; - else if constexpr(N == 1) - return pos; - else if constexpr(N == 2) - return local_coords{pos}; - else - return std::void_t>(); - } + typename std::tuple_element>::type get(); }; extern template class basic_tile_iterator; extern template class basic_tile_iterator; +extern template typename std::tuple_element<0, basic_tile_iterator>::type basic_tile_iterator::get<0>(); +extern template typename std::tuple_element<1, basic_tile_iterator>::type basic_tile_iterator::get<1>(); +extern template typename std::tuple_element<2, basic_tile_iterator>::type basic_tile_iterator::get<2>(); + +extern template typename std::tuple_element<0, basic_tile_iterator>::type basic_tile_iterator::get<0>(); +extern template typename std::tuple_element<1, basic_tile_iterator>::type basic_tile_iterator::get<1>(); +extern template typename std::tuple_element<2, basic_tile_iterator>::type basic_tile_iterator::get<2>(); + } // namespace Magnum::Examples namespace std { -- cgit v1.2.3