forked from OSchip/llvm-project
Add (commented out) constexpr tests for copy/copy_backwards/copy_if/copy_n. These will be enabled when that part of P0202 is implemented. NFC at this time.
llvm-svn: 323137
This commit is contained in:
parent
1d89cd2bb4
commit
cbe768ec69
|
@ -10,14 +10,27 @@
|
|||
// <algorithm>
|
||||
|
||||
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter>
|
||||
// OutIter
|
||||
// constexpr OutIter // constexpr after C++17
|
||||
// copy(InIter first, InIter last, OutIter result);
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// TEST_CONSTEXPR bool test_constexpr() {
|
||||
// int ia[] = {1, 2, 3, 4, 5};
|
||||
// int ic[] = {6, 6, 6, 6, 6, 6, 6};
|
||||
//
|
||||
// auto p = std::copy(std::begin(ia), std::end(ia), std::begin(ic));
|
||||
// return std::equal(std::begin(ia), std::end(ia), std::begin(ic), p)
|
||||
// && std::all_of(p, std::end(ic), [](int a){return a == 6;})
|
||||
// ;
|
||||
// }
|
||||
// #endif
|
||||
|
||||
template <class InIter, class OutIter>
|
||||
void
|
||||
test()
|
||||
|
@ -70,4 +83,8 @@ int main()
|
|||
test<const int*, bidirectional_iterator<int*> >();
|
||||
test<const int*, random_access_iterator<int*> >();
|
||||
test<const int*, int*>();
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// static_assert(test_constexpr());
|
||||
// #endif
|
||||
}
|
||||
|
|
|
@ -11,13 +11,28 @@
|
|||
|
||||
// template<BidirectionalIterator InIter, BidirectionalIterator OutIter>
|
||||
// requires OutputIterator<OutIter, InIter::reference>
|
||||
// OutIter
|
||||
// constexpr OutIter // constexpr after C++17
|
||||
// copy_backward(InIter first, InIter last, OutIter result);
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
#include "user_defined_integral.hpp"
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// TEST_CONSTEXPR bool test_constexpr() {
|
||||
// int ia[] = {1, 2, 3, 4, 5};
|
||||
// int ic[] = {6, 6, 6, 6, 6, 6, 6};
|
||||
//
|
||||
// size_t N = std::size(ia);
|
||||
// auto p = std::copy_backward(std::begin(ia), std::end(ia), std::begin(ic) + N);
|
||||
// return std::equal(std::begin(ic), p, std::begin(ia))
|
||||
// && std::all_of(p, std::end(ic), [](int a){return a == 6;})
|
||||
// ;
|
||||
// }
|
||||
// #endif
|
||||
|
||||
template <class InIter, class OutIter>
|
||||
void
|
||||
|
@ -48,4 +63,8 @@ int main()
|
|||
test<const int*, bidirectional_iterator<int*> >();
|
||||
test<const int*, random_access_iterator<int*> >();
|
||||
test<const int*, int*>();
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// static_assert(test_constexpr());
|
||||
// #endif
|
||||
}
|
||||
|
|
|
@ -12,14 +12,27 @@
|
|||
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter,
|
||||
// Predicate<auto, InIter::value_type> Pred>
|
||||
// requires CopyConstructible<Pred>
|
||||
// OutIter
|
||||
// constexpr OutIter // constexpr after C++17
|
||||
// copy_if(InIter first, InIter last, OutIter result, Pred pred);
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// TEST_CONSTEXPR bool test_constexpr() {
|
||||
// int ia[] = {2, 4, 6, 8, 6};
|
||||
// int ic[] = {0, 0, 0, 0, 0, 0};
|
||||
//
|
||||
// auto p = std::copy_if(std::begin(ia), std::end(ia), std::begin(ic), is6);
|
||||
// return std::all_of(std::begin(ic), p, [](int a){return a == 6;})
|
||||
// && std::all_of(p, std::end(ic), [](int a){return a == 0;})
|
||||
// ;
|
||||
// }
|
||||
// #endif
|
||||
|
||||
struct Pred
|
||||
{
|
||||
bool operator()(int i) {return i % 3 == 0;}
|
||||
|
@ -77,4 +90,8 @@ int main()
|
|||
test<const int*, bidirectional_iterator<int*> >();
|
||||
test<const int*, random_access_iterator<int*> >();
|
||||
test<const int*, int*>();
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// static_assert(test_constexpr());
|
||||
// #endif
|
||||
}
|
||||
|
|
|
@ -10,15 +10,28 @@
|
|||
// <algorithm>
|
||||
|
||||
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter>
|
||||
// OutIter
|
||||
// constexpr OutIter // constexpr after C++17
|
||||
// copy_n(InIter first, InIter::difference_type n, OutIter result);
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
||||
#include "test_macros.h"
|
||||
#include "test_iterators.h"
|
||||
#include "user_defined_integral.hpp"
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// TEST_CONSTEXPR bool test_constexpr() {
|
||||
// int ia[] = {1, 2, 3, 4, 5};
|
||||
// int ic[] = {6, 6, 6, 6, 6, 6, 6};
|
||||
//
|
||||
// auto p = std::copy_n(std::begin(ia), 4, std::begin(ic));
|
||||
// return std::equal(std::begin(ic), p, std::begin(ia))
|
||||
// && std::all_of(p, std::end(ic), [](int a){return a == 6;})
|
||||
// ;
|
||||
// }
|
||||
// #endif
|
||||
|
||||
typedef UserDefinedIntegral<unsigned> UDI;
|
||||
|
||||
template <class InIter, class OutIter>
|
||||
|
@ -73,4 +86,8 @@ int main()
|
|||
test<const int*, bidirectional_iterator<int*> >();
|
||||
test<const int*, random_access_iterator<int*> >();
|
||||
test<const int*, int*>();
|
||||
|
||||
// #if TEST_STD_VER > 17
|
||||
// static_assert(test_constexpr());
|
||||
// #endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue