Implement the last bit of P0031: 'A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access' for C++17
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290976 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user