diff --git a/doc/rst2html b/doc/rst2html.sh
old mode 100644
new mode 100755
similarity index 100%
rename from doc/rst2html
rename to doc/rst2html.sh
diff --git a/doc/rst2latex b/doc/rst2latex.sh
old mode 100644
new mode 100755
similarity index 100%
rename from doc/rst2latex
rename to doc/rst2latex.sh
diff --git a/include/boost/function_output_iterator.hpp b/include/boost/function_output_iterator.hpp
index dd8c44d..15dbcb9 100644
--- a/include/boost/function_output_iterator.hpp
+++ b/include/boost/function_output_iterator.hpp
@@ -1,62 +1,14 @@
-// (C) Copyright Jeremy Siek 2001.
+// (C) Copyright Andrey Semashev 2017.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-// Revision History:
-
-// 27 Feb 2001 Jeremy Siek
-// Initial checkin.
-
#ifndef BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
#define BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
-#include
+// This is a deprecated header left for backward compatibility.
+// Use boost/iterator/function_output_iterator.hpp instead.
-namespace boost {
-namespace iterators {
-
- template
- class function_output_iterator {
- typedef function_output_iterator self;
- public:
- typedef std::output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- explicit function_output_iterator() {}
-
- explicit function_output_iterator(const UnaryFunction& f)
- : m_f(f) {}
-
- struct output_proxy {
- output_proxy(UnaryFunction& f) : m_f(f) { }
- template output_proxy& operator=(const T& value) {
- m_f(value);
- return *this;
- }
- UnaryFunction& m_f;
- };
- output_proxy operator*() { return output_proxy(m_f); }
- self& operator++() { return *this; }
- self& operator++(int) { return *this; }
- private:
- UnaryFunction m_f;
- };
-
- template
- inline function_output_iterator
- make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) {
- return function_output_iterator(f);
- }
-
-} // namespace iterators
-
-using iterators::function_output_iterator;
-using iterators::make_function_output_iterator;
-
-} // namespace boost
+#include
#endif // BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
diff --git a/include/boost/iterator/function_output_iterator.hpp b/include/boost/iterator/function_output_iterator.hpp
new file mode 100644
index 0000000..51fe835
--- /dev/null
+++ b/include/boost/iterator/function_output_iterator.hpp
@@ -0,0 +1,62 @@
+// (C) Copyright Jeremy Siek 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Revision History:
+
+// 27 Feb 2001 Jeremy Siek
+// Initial checkin.
+
+#ifndef BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP
+#define BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP
+
+#include
+
+namespace boost {
+namespace iterators {
+
+ template
+ class function_output_iterator {
+ typedef function_output_iterator self;
+ public:
+ typedef std::output_iterator_tag iterator_category;
+ typedef void value_type;
+ typedef void difference_type;
+ typedef void pointer;
+ typedef void reference;
+
+ explicit function_output_iterator() {}
+
+ explicit function_output_iterator(const UnaryFunction& f)
+ : m_f(f) {}
+
+ struct output_proxy {
+ output_proxy(UnaryFunction& f) : m_f(f) { }
+ template output_proxy& operator=(const T& value) {
+ m_f(value);
+ return *this;
+ }
+ UnaryFunction& m_f;
+ };
+ output_proxy operator*() { return output_proxy(m_f); }
+ self& operator++() { return *this; }
+ self& operator++(int) { return *this; }
+ private:
+ UnaryFunction m_f;
+ };
+
+ template
+ inline function_output_iterator
+ make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) {
+ return function_output_iterator(f);
+ }
+
+} // namespace iterators
+
+using iterators::function_output_iterator;
+using iterators::make_function_output_iterator;
+
+} // namespace boost
+
+#endif // BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP
diff --git a/include/boost/iterator/new_iterator_tests.hpp b/include/boost/iterator/new_iterator_tests.hpp
index cb9b107..a1d3b2f 100644
--- a/include/boost/iterator/new_iterator_tests.hpp
+++ b/include/boost/iterator/new_iterator_tests.hpp
@@ -29,16 +29,18 @@
// (David Abrahams)
# include
-# include
# include
# include // for detail::dummy_constructor
# include
# include
# include
+# include
+# include
+# include
# include
# include
-# include
+# include
namespace boost {
diff --git a/include/boost/iterator/transform_iterator.hpp b/include/boost/iterator/transform_iterator.hpp
index 67356ff..2281df8 100644
--- a/include/boost/iterator/transform_iterator.hpp
+++ b/include/boost/iterator/transform_iterator.hpp
@@ -47,7 +47,11 @@ namespace iterators {
// the function.
typedef typename ia_dflt_help<
Reference
+#ifdef BOOST_RESULT_OF_USE_TR1
, result_of::reference)>
+#else
+ , result_of::reference)>
+#endif
>::type reference;
// To get the default for Value: remove any reference on the
diff --git a/include/boost/pending/iterator_tests.hpp b/include/boost/pending/iterator_tests.hpp
index 1640310..b4d2efa 100644
--- a/include/boost/pending/iterator_tests.hpp
+++ b/include/boost/pending/iterator_tests.hpp
@@ -20,12 +20,14 @@
// (David Abrahams)
# include
-# include
-# include
# include
# include // for detail::dummy_constructor
# include
# include
+# include
+# include
+# include
+# include
namespace boost {
@@ -51,28 +53,28 @@ template
void trivial_iterator_test(const Iterator i, const Iterator j, T val)
{
Iterator k;
- assert(i == i);
- assert(j == j);
- assert(i != j);
+ BOOST_TEST(i == i);
+ BOOST_TEST(j == j);
+ BOOST_TEST(i != j);
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
T v = *i;
#else
typename std::iterator_traits::value_type v = *i;
#endif
- assert(v == val);
+ BOOST_TEST(v == val);
boost::ignore_unused(v);
#if 0
// hmm, this will give a warning for transform_iterator... perhaps
// this should be separated out into a stand-alone test since there
// are several situations where it can't be used, like for
// integer_range::iterator.
- assert(v == i->foo());
+ BOOST_TEST(v == i->foo());
#endif
k = i;
- assert(k == k);
- assert(k == i);
- assert(k != j);
- assert(*k == val);
+ BOOST_TEST(k == k);
+ BOOST_TEST(k == i);
+ BOOST_TEST(k != j);
+ BOOST_TEST(*k == val);
boost::ignore_unused(k);
}
@@ -92,8 +94,8 @@ void input_iterator_test(Iterator i, T v1, T v2)
{
Iterator i1(i);
- assert(i == i1);
- assert(!(i != i1));
+ BOOST_TEST(i == i1);
+ BOOST_TEST(!(i != i1));
// I can see no generic way to create an input iterator
// that is in the domain of== of i and != i.
@@ -102,24 +104,24 @@ void input_iterator_test(Iterator i, T v1, T v2)
//
// Iterator i2;
//
- // assert(i != i2);
- // assert(!(i == i2));
+ // BOOST_TEST(i != i2);
+ // BOOST_TEST(!(i == i2));
- assert(*i1 == v1);
- assert(*i == v1);
+ BOOST_TEST(*i1 == v1);
+ BOOST_TEST(*i == v1);
// we cannot test for equivalence of (void)++i & (void)i++
// as i is only guaranteed to be single pass.
- assert(*i++ == v1);
+ BOOST_TEST(*i++ == v1);
boost::ignore_unused(i1);
i1 = i;
- assert(i == i1);
- assert(!(i != i1));
+ BOOST_TEST(i == i1);
+ BOOST_TEST(!(i != i1));
- assert(*i1 == v2);
- assert(*i == v2);
+ BOOST_TEST(*i1 == v2);
+ BOOST_TEST(*i == v2);
boost::ignore_unused(i1);
// i is dereferencable, so it must be incrementable.
@@ -162,15 +164,15 @@ void forward_iterator_test(Iterator i, T v1, T v2)
Iterator i1 = i, i2 = i;
- assert(i == i1++);
- assert(i != ++i2);
+ BOOST_TEST(i == i1++);
+ BOOST_TEST(i != ++i2);
trivial_iterator_test(i, i1, v1);
trivial_iterator_test(i, i2, v1);
++i;
- assert(i == i1);
- assert(i == i2);
+ BOOST_TEST(i == i1);
+ BOOST_TEST(i == i2);
++i1;
++i2;
@@ -192,15 +194,15 @@ void bidirectional_iterator_test(Iterator i, T v1, T v2)
Iterator i1 = i, i2 = i;
- assert(i == i1--);
- assert(i != --i2);
+ BOOST_TEST(i == i1--);
+ BOOST_TEST(i != --i2);
trivial_iterator_test(i, i1, v2);
trivial_iterator_test(i, i2, v2);
--i;
- assert(i == i1);
- assert(i == i2);
+ BOOST_TEST(i == i1);
+ BOOST_TEST(i == i2);
++i1;
++i2;
@@ -224,30 +226,30 @@ void random_access_iterator_test(Iterator i, int N, TrueVals vals)
boost::ignore_unused();
for (c = 0; c < N-1; ++c) {
- assert(i == j + c);
- assert(*i == vals[c]);
- assert(*i == boost::implicit_cast(j[c]));
- assert(*i == *(j + c));
- assert(*i == *(c + j));
+ BOOST_TEST(i == j + c);
+ BOOST_TEST(*i == vals[c]);
+ BOOST_TEST(*i == boost::implicit_cast(j[c]));
+ BOOST_TEST(*i == *(j + c));
+ BOOST_TEST(*i == *(c + j));
++i;
- assert(i > j);
- assert(i >= j);
- assert(j <= i);
- assert(j < i);
+ BOOST_TEST(i > j);
+ BOOST_TEST(i >= j);
+ BOOST_TEST(j <= i);
+ BOOST_TEST(j < i);
}
Iterator k = j + N - 1;
for (c = 0; c < N-1; ++c) {
- assert(i == k - c);
- assert(*i == vals[N - 1 - c]);
- assert(*i == boost::implicit_cast(j[N - 1 - c]));
+ BOOST_TEST(i == k - c);
+ BOOST_TEST(*i == vals[N - 1 - c]);
+ BOOST_TEST(*i == boost::implicit_cast(j[N - 1 - c]));
Iterator q = k - c;
boost::ignore_unused(q);
- assert(*i == *q);
- assert(i > j);
- assert(i >= j);
- assert(j <= i);
- assert(j < i);
+ BOOST_TEST(*i == *q);
+ BOOST_TEST(i > j);
+ BOOST_TEST(i >= j);
+ BOOST_TEST(j <= i);
+ BOOST_TEST(j < i);
--i;
}
}
@@ -256,16 +258,16 @@ void random_access_iterator_test(Iterator i, int N, TrueVals vals)
template
void const_nonconst_iterator_test(Iterator i, ConstIterator j)
{
- assert(i != j);
- assert(j != i);
+ BOOST_TEST(i != j);
+ BOOST_TEST(j != i);
ConstIterator k(i);
- assert(k == i);
- assert(i == k);
+ BOOST_TEST(k == i);
+ BOOST_TEST(i == k);
k = i;
- assert(k == i);
- assert(i == k);
+ BOOST_TEST(k == i);
+ BOOST_TEST(i == k);
boost::ignore_unused(k);
}