diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2017-01-04 17:58:17 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2017-01-04 17:58:17 +0000 |
commit | 020b623a3b03a89aa56beba357bfa27c36cf13a7 (patch) | |
tree | 524e8201eb9d25861affd059a55f1123ec75d943 /libcxx/test/std/containers/sequences/array/iterators.pass.cpp | |
parent | df8a13b25763b7192579c74049322e5e6dd3da54 (diff) | |
download | bcm5719-llvm-020b623a3b03a89aa56beba357bfa27c36cf13a7.tar.gz bcm5719-llvm-020b623a3b03a89aa56beba357bfa27c36cf13a7.zip |
Implement the last bit of P0031: 'A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access' for C++17
llvm-svn: 290976
Diffstat (limited to 'libcxx/test/std/containers/sequences/array/iterators.pass.cpp')
-rw-r--r-- | libcxx/test/std/containers/sequences/array/iterators.pass.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libcxx/test/std/containers/sequences/array/iterators.pass.cpp b/libcxx/test/std/containers/sequences/array/iterators.pass.cpp index 1f9904e1fa7..7d9050800de 100644 --- a/libcxx/test/std/containers/sequences/array/iterators.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/iterators.pass.cpp @@ -17,6 +17,10 @@ #include "test_macros.h" +// std::array is explicitly allowed to be initialized with A a = { init-list };. +// Disable the missing braces warning for this reason. +#include "disable_missing_braces_warning.h" + int main() { { @@ -109,4 +113,33 @@ int main() } } #endif +#if TEST_STD_VER > 14 + { + typedef std::array<int, 5> C; + constexpr C c{0,1,2,3,4}; + + static_assert ( c.begin() == std::begin(c), ""); + static_assert ( c.cbegin() == std::cbegin(c), ""); + static_assert ( c.end() == std::end(c), ""); + static_assert ( c.cend() == std::cend(c), ""); + + static_assert ( c.rbegin() == std::rbegin(c), ""); + static_assert ( c.crbegin() == std::crbegin(c), ""); + static_assert ( c.rend() == std::rend(c), ""); + static_assert ( c.crend() == std::crend(c), ""); + + static_assert ( std::begin(c) != std::end(c), ""); + static_assert ( std::rbegin(c) != std::rend(c), ""); + static_assert ( std::cbegin(c) != std::cend(c), ""); + static_assert ( std::crbegin(c) != std::crend(c), ""); + + static_assert ( *c.begin() == 0, ""); + static_assert ( *c.rbegin() == 4, ""); + + static_assert ( *std::begin(c) == 0, "" ); + static_assert ( *std::cbegin(c) == 0, "" ); + static_assert ( *std::rbegin(c) == 4, "" ); + static_assert ( *std::crbegin(c) == 4, "" ); + } +#endif } |