| 1 | --- D:/users/debionne/dev/boost/clean/boost_1_39_0/boost/iterator/transform_iterator.hpp Sun Nov 25 20:07:19 2007
|
|---|
| 2 | +++ D:/users/debionne/dev/boost/boost_1_39_0/boost/iterator/transform_iterator.hpp Fri Jul 31 10:38:40 2009
|
|---|
| 3 | @@ -21,6 +21,8 @@
|
|---|
| 4 | #include <boost/type_traits/is_reference.hpp>
|
|---|
| 5 | #include <boost/type_traits/remove_const.hpp>
|
|---|
| 6 | #include <boost/type_traits/remove_reference.hpp>
|
|---|
| 7 | +#include <boost/utility/result_of.hpp>
|
|---|
| 8 | +
|
|---|
| 9 |
|
|---|
| 10 | #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
|
|---|
| 11 | # include <boost/type_traits/is_base_and_derived.hpp>
|
|---|
| 12 | @@ -36,33 +38,18 @@
|
|---|
| 13 |
|
|---|
| 14 | namespace detail
|
|---|
| 15 | {
|
|---|
| 16 | -
|
|---|
| 17 | - template <class UnaryFunc>
|
|---|
| 18 | - struct function_object_result
|
|---|
| 19 | - {
|
|---|
| 20 | - typedef typename UnaryFunc::result_type type;
|
|---|
| 21 | - };
|
|---|
| 22 | -
|
|---|
| 23 | -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
|---|
| 24 | - template <class Return, class Argument>
|
|---|
| 25 | - struct function_object_result<Return(*)(Argument)>
|
|---|
| 26 | - {
|
|---|
| 27 | - typedef Return type;
|
|---|
| 28 | - };
|
|---|
| 29 | -#endif
|
|---|
| 30 | -
|
|---|
| 31 | // Compute the iterator_adaptor instantiation to be used for transform_iterator
|
|---|
| 32 | template <class UnaryFunc, class Iterator, class Reference, class Value>
|
|---|
| 33 | struct transform_iterator_base
|
|---|
| 34 | {
|
|---|
| 35 | private:
|
|---|
| 36 | + typedef typename std::iterator_traits<Iterator>::reference Arg1;
|
|---|
| 37 | +
|
|---|
| 38 | // By default, dereferencing the iterator yields the same as
|
|---|
| 39 | - // the function. Do we need to adjust the way
|
|---|
| 40 | - // function_object_result is computed for the standard
|
|---|
| 41 | - // proposal (e.g. using Doug's result_of)?
|
|---|
| 42 | + // the function.
|
|---|
| 43 | typedef typename ia_dflt_help<
|
|---|
| 44 | Reference
|
|---|
| 45 | - , function_object_result<UnaryFunc>
|
|---|
| 46 | + , result_of<UnaryFunc(typename std::iterator_traits<Iterator>::value_type)>
|
|---|
| 47 | >::type reference;
|
|---|
| 48 |
|
|---|
| 49 | // To get the default for Value: remove any reference on the
|
|---|
| 50 | @@ -114,7 +101,7 @@
|
|---|
| 51 | #endif
|
|---|
| 52 | }
|
|---|
| 53 |
|
|---|
| 54 | - template<
|
|---|
| 55 | + template <
|
|---|
| 56 | class OtherUnaryFunction
|
|---|
| 57 | , class OtherIterator
|
|---|
| 58 | , class OtherReference
|
|---|