mirror of
https://github.com/boostorg/iterator.git
synced 2025-05-10 15:43:55 +00:00
This change excludes boost:: and boost::detail:: namespaces from ADL for unqualified function calls (e.g. algorithms). This reduces the possibility of name clashes with other libraries and user's code. One of the effects should be fixing test failures on gcc 4.2 and 4.4 due to clashed with Boost.TypeTraits. Also some of the functions marked with inline keyword.
63 lines
1.7 KiB
C++
63 lines
1.7 KiB
C++
// (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_FUNCTION_OUTPUT_ITERATOR_HPP
|
|
#define BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
|
|
|
|
#include <iterator>
|
|
|
|
namespace boost {
|
|
namespace iterators {
|
|
|
|
template <class UnaryFunction>
|
|
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 <class T> 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 <class UnaryFunction>
|
|
inline function_output_iterator<UnaryFunction>
|
|
make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) {
|
|
return function_output_iterator<UnaryFunction>(f);
|
|
}
|
|
|
|
} // namespace iterators
|
|
|
|
using iterators::function_output_iterator;
|
|
using iterators::make_function_output_iterator;
|
|
|
|
} // namespace boost
|
|
|
|
#endif // BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
|