id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 10546,Unable to build a project using boost coroutine using gcc 4.4.7,Michael Tomer ,olli,"I am unable to build a simple project using boost coroutine on machines using gcc 4.4.7 (centos6.4, redhat 6.0, 6.1, etc). The same project builds fine using machines running gcc 4.8.3 (fedora 19, centos 7.0). Since the [http://www.boost.org/users/history/version_1_55_0.html Boost 1.55 version history] does list gcc 4.4.7 as a tested compiler, this likely means a regression. The simple test file consists of the following main.cpp file: {{{ #include #include #include #include #include #include using namespace std; typedef boost::coroutines::coroutine routine_t; // The implementation routine of the coroutine. void xrange_impl(routine_t::caller_type& yield, int limit) { for(int i = 0; i < limit; i++) { yield(i); // return results back to the caller } } int main() { routine_t foo(boost::bind(xrange_impl, _1, 10000)); return 0; }; }}} The compile errors that I am getting are: {{{ Building CXX object corotest/CMakeFiles/corotest.dir/src/main.cpp.o In file included from /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:29, from /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:3: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp: In instantiation of ‘boost::detail::is_function_chooser::result_&, int), boost::_bi::list2, boost::_bi::value > > >&>’: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp:60: instantiated from ‘boost::detail::is_function_impl&, int), boost::_bi::list2, boost::_bi::value > > >&>’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp:102: instantiated from ‘boost::is_function&, int), boost::_bi::list2, boost::_bi::value > > >&>’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:354: instantiated from ‘const bool boost::detail::is_convertible_impl&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>::value’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:480: instantiated from ‘boost::is_convertible&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59: instantiated from ‘boost::disable_if&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>, boost::coroutines::coroutine::dummy*>’ /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:22: instantiated from here /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp:52: error: forming pointer to reference type ‘boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&’ In file included from /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:29, from /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:3: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp: In instantiation of ‘boost::is_function&, int), boost::_bi::list2, boost::_bi::value > > >&>’: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:354: instantiated from ‘const bool boost::detail::is_convertible_impl&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>::value’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:480: instantiated from ‘boost::is_convertible&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59: instantiated from ‘boost::disable_if&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>, boost::coroutines::coroutine::dummy*>’ /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:22: instantiated from here /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp:102: error: ‘value’ is not a member of ‘boost::detail::is_function_impl&, int), boost::_bi::list2, boost::_bi::value > > >&>’ In file included from /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:3: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp: In instantiation of ‘const bool boost::detail::is_convertible_impl&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>::value’: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:480: instantiated from ‘boost::is_convertible&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59: instantiated from ‘boost::disable_if&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>, boost::coroutines::coroutine::dummy*>’ /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:22: instantiated from here /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:354: error: ‘value’ is not a member of ‘boost::is_function&, int), boost::_bi::list2, boost::_bi::value > > >&>’ In file included from /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:3: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp: In instantiation of ‘boost::is_convertible&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>’: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59: instantiated from ‘boost::disable_if&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>, boost::coroutines::coroutine::dummy*>’ /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:22: instantiated from here /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_convertible.hpp:480: error: ‘boost::detail::is_convertible_impl&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>::value’ is not a valid template argument for type ‘bool’ because it is a non-constant expression In file included from /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:2: /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp: In instantiation of ‘boost::disable_if&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>, boost::coroutines::coroutine::dummy*>’: /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:22: instantiated from here /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59: error: ‘value’ is not a member of ‘boost::is_convertible&, int), boost::_bi::list2, boost::_bi::value > >&, boost::rv&, int), boost::_bi::list2, boost::_bi::value > > >&>’ /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp: In function ‘int main()’: /users/mtomer/mike/mysqlcpp_umbrella/corotest/src/main.cpp:22: error: no matching function for call to ‘boost::coroutines::coroutine::coroutine(boost::_bi::bind_t&, int), boost::_bi::list2, boost::_bi::value > >)’ /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/coroutine/v1/coroutine.hpp:600: note: candidates are: boost::coroutines::coroutine::coroutine(boost::rv >&) [with Signature = int()] /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/coroutine/v1/coroutine.hpp:155: note: boost::coroutines::coroutine::coroutine() [with Signature = int()] /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/coroutine/v1/coroutine.hpp:119: note: boost::coroutines::coroutine::coroutine(boost::coroutines::coroutine&) [with Signature = int()] make[2]: *** [corotest/CMakeFiles/corotest.dir/src/main.cpp.o] Error 1 make[1]: *** [corotest/CMakeFiles/corotest.dir/all] Error 2 make: *** [all] Error 2 }}} Output from ""gcc --version"" on the machine where it will NOT build is: {{{ $ gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. }}} Output from ""gcc --version"" on the machine where it will build is: {{{ $ gcc --version gcc (GCC) 4.8.3 20140624 (Red Hat 4.8.3-1) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. }}}",Support Requests,closed,To Be Determined,coroutine,Boost 1.55.0,Regression,wontfix,,