24 using namespace folly;
27 struct IntArrayIterator
28 :
IteratorFacade<IntArrayIterator, int const, std::forward_iterator_tag> {
29 explicit IntArrayIterator(
int const*
a) : a_(a) {}
36 bool equal(IntArrayIterator
const&
rhs)
const {
43 TEST(IteratorsTest, IterFacadeHasCorrectTraits) {
44 using TR = std::iterator_traits<IntArrayIterator>;
54 TEST(IteratorsTest, SimpleIteratorFacade) {
56 IntArrayIterator
end(kArray.data() + kArray.size());
57 IntArrayIterator iter(kArray.data());
76 std::forward_iterator_tag> {
81 std::forward_iterator_tag>;
82 explicit IntPointerIter(
int const*
ptr) : Super(ptr) {}
86 TEST(IteratorsTest, IterAdaptorHasCorrectTraits) {
87 using TR = std::iterator_traits<IntPointerIter>;
97 TEST(IteratorsTest, IterAdaptorWithPointer) {
99 IntPointerIter
end(kArray.data() + kArray.size());
100 IntPointerIter iter(kArray.data());
118 std::map<int, int>::iterator,
120 std::forward_iterator_tag> {
123 std::map<int, int>::iterator,
125 std::forward_iterator_tag>;
126 explicit IntMapKeyIter(std::map<int, int>::iterator iter) : Super(iter) {}
128 return base()->first;
134 std::map<int, int>::iterator,
136 std::forward_iterator_tag> {
139 std::map<int, int>::iterator,
141 std::forward_iterator_tag>;
142 explicit IntMapValueIter(std::map<int, int>::iterator iter) : Super(iter) {}
144 return base()->second;
150 TEST(IteratorsTest, IterAdaptorOfOtherIter) {
151 std::map<int, int>
m{{2, 42}, {3, 43}, {4, 44}};
153 IntMapKeyIter keyEnd(
m.end());
154 IntMapKeyIter keyIter(
m.begin());
166 IntMapValueIter valueEnd(
m.end());
167 IntMapValueIter valueIter(
m.begin());
182 IntMapValueIterConst,
183 std::map<int, int>::const_iterator,
185 std::forward_iterator_tag> {
187 IntMapValueIterConst,
188 std::map<int, int>::const_iterator,
190 std::forward_iterator_tag>;
191 explicit IntMapValueIterConst(std::map<int, int>::const_iterator iter)
193 IntMapValueIterConst(IntMapValueIter
const&
rhs)
194 : IntMapValueIterConst(rhs.base()) {}
196 return base()->second;
201 TEST(IteratorsTest, MixedConstAndNonconstIters) {
202 std::map<int, int>
m{{2, 42}, {3, 43}, {4, 44}};
203 IntMapValueIterConst
cend(
m.cend());
204 IntMapValueIter valueIter(
m.begin());
#define EXPECT_EQ(val1, val2)
constexpr array_detail::return_type< D, TList... > make_array(TList &&...t)
—— Concurrent Priority Queue Implementation ——
FOLLY_PUSH_WARNING RHS rhs
auto end(TestAdlIterable &instance)
static map< string, int > m
static const char *const value
#define EXPECT_NE(val1, val2)
TEST(SequencedExecutor, CPUThreadPoolExecutor)
Iterator< typename Container::const_iterator > cend(const Container &c)
constexpr detail::Dereference dereference