From 21141ef401dea5b985c2f0b91b2c94146a68a0ab Mon Sep 17 00:00:00 2001 From: Thomas Witt Date: Tue, 1 Jul 2003 21:30:03 +0000 Subject: [PATCH] Simplyfied make_transform_iterator. [SVN r1398] --- include/boost/iterator/transform_iterator.hpp | 47 +++---------------- test/transform_iterator_test.cpp | 2 - 2 files changed, 6 insertions(+), 43 deletions(-) diff --git a/include/boost/iterator/transform_iterator.hpp b/include/boost/iterator/transform_iterator.hpp index c996038..102f69b 100644 --- a/include/boost/iterator/transform_iterator.hpp +++ b/include/boost/iterator/transform_iterator.hpp @@ -118,49 +118,14 @@ namespace boost return transform_iterator(it, fun); } - namespace detail { - - template - struct is_unary : - mpl::bool_<(function_traits::arity == 1)> - {}; - - template - struct is_unary_function; - -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1200) - template - struct is_unary_function : - mpl::apply_if< is_function - , is_unary - , mpl::bool_ - >::type - {}; -#endif - - } - - // - // ToDo: Think twice whether enable_if is better than an - // static assert. Currently we get convoluted error messages - // from the above overload for any pointer that is not a - // pointer to a unary function. - // - // If function does not accept function type syntax we are out - // of luck. Ok we can spell it out for - typename detail::enable_if< - detail::is_unary_function - , transform_iterator< function, Iterator> - >::type - make_transform_iterator(Iterator it, UnaryFunction* fun) + template + transform_iterator< function1, Iterator> + make_transform_iterator(Iterator it, Return (*fun)(Argument)) { - return make_transform_iterator(it, function(fun)); + typedef function1 function_t; + + return transform_iterator(it, function_t(fun)); } -#endif } // namespace boost diff --git a/test/transform_iterator_test.cpp b/test/transform_iterator_test.cpp index 4161cc4..8d6a55e 100644 --- a/test/transform_iterator_test.cpp +++ b/test/transform_iterator_test.cpp @@ -132,7 +132,6 @@ main() boost::random_access_readable_iterator_test(i, N, x); } -#if !defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) // Test transform_iterator with function pointers { int x[N], y[N]; @@ -156,7 +155,6 @@ main() , x); } -#endif // Test transform_iterator as projection iterator {