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.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@323137 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -10,14 +10,27 @@
|
|||||||
// <algorithm>
|
// <algorithm>
|
||||||
|
|
||||||
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter>
|
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter>
|
||||||
// OutIter
|
// constexpr OutIter // constexpr after C++17
|
||||||
// copy(InIter first, InIter last, OutIter result);
|
// copy(InIter first, InIter last, OutIter result);
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
#include "test_macros.h"
|
||||||
#include "test_iterators.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>
|
template <class InIter, class OutIter>
|
||||||
void
|
void
|
||||||
test()
|
test()
|
||||||
@@ -70,4 +83,8 @@ int main()
|
|||||||
test<const int*, bidirectional_iterator<int*> >();
|
test<const int*, bidirectional_iterator<int*> >();
|
||||||
test<const int*, random_access_iterator<int*> >();
|
test<const int*, random_access_iterator<int*> >();
|
||||||
test<const int*, int*>();
|
test<const int*, int*>();
|
||||||
|
|
||||||
|
// #if TEST_STD_VER > 17
|
||||||
|
// static_assert(test_constexpr());
|
||||||
|
// #endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,28 @@
|
|||||||
|
|
||||||
// template<BidirectionalIterator InIter, BidirectionalIterator OutIter>
|
// template<BidirectionalIterator InIter, BidirectionalIterator OutIter>
|
||||||
// requires OutputIterator<OutIter, InIter::reference>
|
// requires OutputIterator<OutIter, InIter::reference>
|
||||||
// OutIter
|
// constexpr OutIter // constexpr after C++17
|
||||||
// copy_backward(InIter first, InIter last, OutIter result);
|
// copy_backward(InIter first, InIter last, OutIter result);
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
#include "test_macros.h"
|
||||||
#include "test_iterators.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>
|
template <class InIter, class OutIter>
|
||||||
void
|
void
|
||||||
@@ -48,4 +63,8 @@ int main()
|
|||||||
test<const int*, bidirectional_iterator<int*> >();
|
test<const int*, bidirectional_iterator<int*> >();
|
||||||
test<const int*, random_access_iterator<int*> >();
|
test<const int*, random_access_iterator<int*> >();
|
||||||
test<const int*, 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,
|
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter,
|
||||||
// Predicate<auto, InIter::value_type> Pred>
|
// Predicate<auto, InIter::value_type> Pred>
|
||||||
// requires CopyConstructible<Pred>
|
// requires CopyConstructible<Pred>
|
||||||
// OutIter
|
// constexpr OutIter // constexpr after C++17
|
||||||
// copy_if(InIter first, InIter last, OutIter result, Pred pred);
|
// copy_if(InIter first, InIter last, OutIter result, Pred pred);
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
#include "test_macros.h"
|
||||||
#include "test_iterators.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
|
struct Pred
|
||||||
{
|
{
|
||||||
bool operator()(int i) {return i % 3 == 0;}
|
bool operator()(int i) {return i % 3 == 0;}
|
||||||
@@ -77,4 +90,8 @@ int main()
|
|||||||
test<const int*, bidirectional_iterator<int*> >();
|
test<const int*, bidirectional_iterator<int*> >();
|
||||||
test<const int*, random_access_iterator<int*> >();
|
test<const int*, random_access_iterator<int*> >();
|
||||||
test<const int*, int*>();
|
test<const int*, int*>();
|
||||||
|
|
||||||
|
// #if TEST_STD_VER > 17
|
||||||
|
// static_assert(test_constexpr());
|
||||||
|
// #endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,15 +10,28 @@
|
|||||||
// <algorithm>
|
// <algorithm>
|
||||||
|
|
||||||
// template<InputIterator InIter, OutputIterator<auto, InIter::reference> OutIter>
|
// 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);
|
// copy_n(InIter first, InIter::difference_type n, OutIter result);
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
#include "test_macros.h"
|
||||||
#include "test_iterators.h"
|
#include "test_iterators.h"
|
||||||
#include "user_defined_integral.hpp"
|
#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;
|
typedef UserDefinedIntegral<unsigned> UDI;
|
||||||
|
|
||||||
template <class InIter, class OutIter>
|
template <class InIter, class OutIter>
|
||||||
@@ -73,4 +86,8 @@ int main()
|
|||||||
test<const int*, bidirectional_iterator<int*> >();
|
test<const int*, bidirectional_iterator<int*> >();
|
||||||
test<const int*, random_access_iterator<int*> >();
|
test<const int*, random_access_iterator<int*> >();
|
||||||
test<const int*, int*>();
|
test<const int*, int*>();
|
||||||
|
|
||||||
|
// #if TEST_STD_VER > 17
|
||||||
|
// static_assert(test_constexpr());
|
||||||
|
// #endif
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user