mirror of
https://github.com/boostorg/iterator.git
synced 2025-05-09 23:23:54 +00:00
Updated to use boost/bind/bind.hpp to avoid warnings and compliance with C++20.
boost/bind.hpp emits warnings about deprecating global placeholder argument keywords. C++20 removes std::bind1st/bind2nd, so replaced their usage with boost::bind.
This commit is contained in:
parent
4fe679bb0d
commit
c2929ea6c6
@ -50,11 +50,11 @@ the integers greater than `-2`.
|
|||||||
// Another example using make_filter_iterator()
|
// Another example using make_filter_iterator()
|
||||||
std::copy(
|
std::copy(
|
||||||
boost::make_filter_iterator(
|
boost::make_filter_iterator(
|
||||||
std::bind2nd(std::greater<int>(), -2)
|
std::bind(std::greater<int>(), std::placeholders::_1, -2)
|
||||||
, numbers, numbers + N)
|
, numbers, numbers + N)
|
||||||
|
|
||||||
, boost::make_filter_iterator(
|
, boost::make_filter_iterator(
|
||||||
std::bind2nd(std::greater<int>(), -2)
|
std::bind(std::greater<int>(), std::placeholders::_1, -2)
|
||||||
, numbers + N, numbers + N)
|
, numbers + N, numbers + N)
|
||||||
|
|
||||||
, std::ostream_iterator<int>(std::cout, " ")
|
, std::ostream_iterator<int>(std::cout, " ")
|
||||||
|
@ -49,7 +49,7 @@ using the `make_indirect_iterator` helper function.
|
|||||||
const_indirect_last(pointers_to_chars + N);
|
const_indirect_last(pointers_to_chars + N);
|
||||||
|
|
||||||
std::transform(const_indirect_first, const_indirect_last,
|
std::transform(const_indirect_first, const_indirect_last,
|
||||||
mutable_indirect_first, std::bind1st(std::plus<char>(), 1));
|
mutable_indirect_first, std::bind(std::plus<char>(), 1, std::placeholders::_1));
|
||||||
|
|
||||||
std::copy(mutable_indirect_first, mutable_indirect_last,
|
std::copy(mutable_indirect_first, mutable_indirect_last,
|
||||||
std::ostream_iterator<char>(std::cout, ","));
|
std::ostream_iterator<char>(std::cout, ","));
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <boost/iterator/filter_iterator.hpp>
|
#include <boost/iterator/filter_iterator.hpp>
|
||||||
|
#include <boost/bind/bind.hpp>
|
||||||
#include <boost/cstdlib.hpp> // for exit_success
|
#include <boost/cstdlib.hpp> // for exit_success
|
||||||
|
|
||||||
struct is_positive_number {
|
struct is_positive_number {
|
||||||
@ -42,11 +43,11 @@ int main()
|
|||||||
// Another example using make_filter_iterator()
|
// Another example using make_filter_iterator()
|
||||||
std::copy(
|
std::copy(
|
||||||
boost::make_filter_iterator(
|
boost::make_filter_iterator(
|
||||||
std::bind2nd(std::greater<int>(), -2)
|
boost::bind(std::greater<int>(), boost::placeholders::_1, -2)
|
||||||
, numbers, numbers + N)
|
, numbers, numbers + N)
|
||||||
|
|
||||||
, boost::make_filter_iterator(
|
, boost::make_filter_iterator(
|
||||||
std::bind2nd(std::greater<int>(), -2)
|
boost::bind(std::greater<int>(), boost::placeholders::_1, -2)
|
||||||
, numbers + N, numbers + N)
|
, numbers + N, numbers + N)
|
||||||
|
|
||||||
, std::ostream_iterator<int>(std::cout, " ")
|
, std::ostream_iterator<int>(std::cout, " ")
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <boost/bind/bind.hpp>
|
||||||
#include <boost/iterator/indirect_iterator.hpp>
|
#include <boost/iterator/indirect_iterator.hpp>
|
||||||
|
|
||||||
int main(int, char*[])
|
int main(int, char*[])
|
||||||
@ -41,7 +42,7 @@ int main(int, char*[])
|
|||||||
const_indirect_last(pointers_to_chars + N);
|
const_indirect_last(pointers_to_chars + N);
|
||||||
|
|
||||||
std::transform(const_indirect_first, const_indirect_last,
|
std::transform(const_indirect_first, const_indirect_last,
|
||||||
mutable_indirect_first, std::bind1st(std::plus<char>(), 1));
|
mutable_indirect_first, boost::bind(std::plus<char>(), 1, boost::placeholders::_1));
|
||||||
|
|
||||||
std::copy(mutable_indirect_first, mutable_indirect_last,
|
std::copy(mutable_indirect_first, mutable_indirect_last,
|
||||||
std::ostream_iterator<char>(std::cout, ","));
|
std::ostream_iterator<char>(std::cout, ","));
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#include <boost/iterator/iterator_concepts.hpp>
|
#include <boost/iterator/iterator_concepts.hpp>
|
||||||
#include <boost/iterator/new_iterator_tests.hpp>
|
#include <boost/iterator/new_iterator_tests.hpp>
|
||||||
#include <boost/pending/iterator_tests.hpp>
|
#include <boost/pending/iterator_tests.hpp>
|
||||||
#include <boost/bind.hpp>
|
|
||||||
#include <boost/concept_check.hpp>
|
#include <boost/concept_check.hpp>
|
||||||
|
|
||||||
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
@ -114,9 +113,9 @@ struct polymorphic_mult_functor
|
|||||||
template <class F, class T> struct result<F(T& )> {typedef void type;};
|
template <class F, class T> struct result<F(T& )> {typedef void type;};
|
||||||
template <class F, class T> struct result<F(const T&)> {typedef void type;};
|
template <class F, class T> struct result<F(const T&)> {typedef void type;};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
T operator()(const T& _arg) const {return _arg*2;}
|
T operator()(const T& _arg) const {return _arg*2;}
|
||||||
template <class T>
|
template <class T>
|
||||||
void operator()(const T& _arg) { BOOST_ASSERT(0); }
|
void operator()(const T& _arg) { BOOST_ASSERT(0); }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -139,15 +138,15 @@ main()
|
|||||||
for (int k = 0; k < N; ++k)
|
for (int k = 0; k < N; ++k)
|
||||||
x[k] = k;
|
x[k] = k;
|
||||||
std::copy(x, x + N, y);
|
std::copy(x, x + N, y);
|
||||||
|
|
||||||
for (int k2 = 0; k2 < N; ++k2)
|
for (int k2 = 0; k2 < N; ++k2)
|
||||||
x[k2] = x[k2] * 2;
|
x[k2] = x[k2] * 2;
|
||||||
|
|
||||||
typedef boost::transform_iterator<adaptable_mult_functor, int*> iter_t;
|
typedef boost::transform_iterator<adaptable_mult_functor, int*> iter_t;
|
||||||
iter_t i(y, adaptable_mult_functor(2));
|
iter_t i(y, adaptable_mult_functor(2));
|
||||||
boost::input_iterator_test(i, x[0], x[1]);
|
boost::input_iterator_test(i, x[0], x[1]);
|
||||||
boost::input_iterator_test(iter_t(&y[0], adaptable_mult_functor(2)), x[0], x[1]);
|
boost::input_iterator_test(iter_t(&y[0], adaptable_mult_functor(2)), x[0], x[1]);
|
||||||
|
|
||||||
boost::random_access_readable_iterator_test(i, N, x);
|
boost::random_access_readable_iterator_test(i, N, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,15 +156,15 @@ main()
|
|||||||
for (int k = 0; k < N; ++k)
|
for (int k = 0; k < N; ++k)
|
||||||
x[k] = k;
|
x[k] = k;
|
||||||
std::copy(x, x + N, y);
|
std::copy(x, x + N, y);
|
||||||
|
|
||||||
for (int k2 = 0; k2 < N; ++k2)
|
for (int k2 = 0; k2 < N; ++k2)
|
||||||
x[k2] = x[k2] * 2;
|
x[k2] = x[k2] * 2;
|
||||||
|
|
||||||
typedef boost::transform_iterator<mult_functor, int*, int> iter_t;
|
typedef boost::transform_iterator<mult_functor, int*, int> iter_t;
|
||||||
iter_t i(y, mult_functor(2));
|
iter_t i(y, mult_functor(2));
|
||||||
boost::input_iterator_test(i, x[0], x[1]);
|
boost::input_iterator_test(i, x[0], x[1]);
|
||||||
boost::input_iterator_test(iter_t(&y[0], mult_functor(2)), x[0], x[1]);
|
boost::input_iterator_test(iter_t(&y[0], mult_functor(2)), x[0], x[1]);
|
||||||
|
|
||||||
boost::random_access_readable_iterator_test(i, N, x);
|
boost::random_access_readable_iterator_test(i, N, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,16 +195,16 @@ main()
|
|||||||
for (int k = 0; k < N; ++k)
|
for (int k = 0; k < N; ++k)
|
||||||
x[k] = k;
|
x[k] = k;
|
||||||
std::copy(x, x + N, y);
|
std::copy(x, x + N, y);
|
||||||
|
|
||||||
for (int k2 = 0; k2 < N; ++k2)
|
for (int k2 = 0; k2 < N; ++k2)
|
||||||
x[k2] = x[k2] * 2;
|
x[k2] = x[k2] * 2;
|
||||||
|
|
||||||
boost::input_iterator_test(
|
boost::input_iterator_test(
|
||||||
boost::make_transform_iterator(y, mult_2), x[0], x[1]);
|
boost::make_transform_iterator(y, mult_2), x[0], x[1]);
|
||||||
|
|
||||||
boost::input_iterator_test(
|
boost::input_iterator_test(
|
||||||
boost::make_transform_iterator(&y[0], mult_2), x[0], x[1]);
|
boost::make_transform_iterator(&y[0], mult_2), x[0], x[1]);
|
||||||
|
|
||||||
boost::random_access_readable_iterator_test(
|
boost::random_access_readable_iterator_test(
|
||||||
boost::make_transform_iterator(y, mult_2), N, x);
|
boost::make_transform_iterator(y, mult_2), N, x);
|
||||||
|
|
||||||
@ -267,16 +266,16 @@ main()
|
|||||||
for (int k = 0; k < N; ++k)
|
for (int k = 0; k < N; ++k)
|
||||||
x[k] = k;
|
x[k] = k;
|
||||||
std::copy(x, x + N, y);
|
std::copy(x, x + N, y);
|
||||||
|
|
||||||
for (int k2 = 0; k2 < N; ++k2)
|
for (int k2 = 0; k2 < N; ++k2)
|
||||||
x[k2] = x[k2] * 2;
|
x[k2] = x[k2] * 2;
|
||||||
|
|
||||||
boost::input_iterator_test(
|
boost::input_iterator_test(
|
||||||
boost::make_transform_iterator(y, polymorphic_mult_functor()), x[0], x[1]);
|
boost::make_transform_iterator(y, polymorphic_mult_functor()), x[0], x[1]);
|
||||||
|
|
||||||
boost::input_iterator_test(
|
boost::input_iterator_test(
|
||||||
boost::make_transform_iterator(&y[0], polymorphic_mult_functor()), x[0], x[1]);
|
boost::make_transform_iterator(&y[0], polymorphic_mult_functor()), x[0], x[1]);
|
||||||
|
|
||||||
boost::random_access_readable_iterator_test(
|
boost::random_access_readable_iterator_test(
|
||||||
boost::make_transform_iterator(y, polymorphic_mult_functor()), N, x);
|
boost::make_transform_iterator(y, polymorphic_mult_functor()), N, x);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user