id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 5626,Compilation error when using boost::phoenix with range adaptors,Nicolas Savoire ,Thomas Heller,"The following piece of code fails to compile with gcc-4.5: {{{ #include #include #include #include #include using namespace boost::phoenix::arg_names; using namespace boost::adaptors; int main() { std::cout << *boost::begin(boost::irange(0,5) | transformed( arg1 +1)); } }}} The error is: {{{ In file included from /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/range/adaptor/transformed.hpp:16:0, from /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/range/adaptor/map.hpp:14, from /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/range/adaptors.hpp:20, from test2.cpp:4: /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/iterator/transform_iterator.hpp: In member function ‘typename boost::detail::transform_iterator_base::type::reference boost::transform_iterator::dereference() const [with UnaryFunc = boost::phoenix::actor >, 0l> >, Iterator = boost::range_detail::integer_iterator, Reference = boost::use_default, Value = boost::use_default, typename boost::detail::transform_iterator_base::type::reference = int&]’: /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/iterator/iterator_facade.hpp:517:32: instantiated from ‘static typename Facade::reference boost::iterator_core_access::dereference(const Facade&) [with Facade = boost::transform_iterator >, 0l> >, boost::range_detail::integer_iterator, boost::use_default, boost::use_default>, typename Facade::reference = int&]’ /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/iterator/iterator_facade.hpp:643:67: instantiated from ‘reference boost::iterator_facade::operator*() const [with Derived = boost::transform_iterator >, 0l> >, boost::range_detail::integer_iterator, boost::use_default, boost::use_default>, Value = int, CategoryOrTraversal = boost::detail::iterator_category_with_traversal, Reference = int&, Difference = long int, reference = int&]’ test2.cpp:13:70: instantiated from here /usr/local/mkt-dev/src/boost_1_47_0_rc/boost/iterator/transform_iterator.hpp:121:31: error: invalid initialization of reference of type ‘int&’ from expression of type ‘const int’ }}} It seems that result_of returns int& instead of int. ",Bugs,closed,Boost 1.47.0,phoenix,Boost 1.47.0,Regression,fixed,,