diff options
Diffstat (limited to 'test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp')
-rw-r--r-- | test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp b/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp index 449f7e809..30a95c367 100644 --- a/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp +++ b/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp @@ -15,10 +15,13 @@ // requires HasAssign<Iter, const U&> // move_iterator& // operator=(const move_iterator<U>& u); +// +// constexpr in C++17 #include <iterator> #include <cassert> +#include "test_macros.h" #include "test_iterators.h" template <class It, class U> @@ -44,4 +47,14 @@ int main() test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d)); test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d)); test<Base*>(&d); +#if TEST_STD_VER > 14 + { + using BaseIter = std::move_iterator<const Base *>; + using DerivedIter = std::move_iterator<const Derived *>; + constexpr const Derived *p = nullptr; + constexpr DerivedIter it1 = std::make_move_iterator(p); + constexpr BaseIter it2 = (BaseIter{nullptr} = it1); + static_assert(it2.base() == p, ""); + } +#endif } |