[Boost-bugs] [Boost C++ Libraries] #10546: Unable to build a project using boost coroutine using gcc 4.4.7

Subject: [Boost-bugs] [Boost C++ Libraries] #10546: Unable to build a project using boost coroutine using gcc 4.4.7
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-09-26 19:35:13


#10546: Unable to build a project using boost coroutine using gcc 4.4.7
------------------------------------------+------------------------
 Reporter: Michael Tomer <Jester3141@…> | Owner: olli
     Type: Support Requests | Status: new
Milestone: To Be Determined | Component: coroutine
  Version: Boost 1.55.0 | Severity: Regression
 Keywords: |
------------------------------------------+------------------------
 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 <iostream>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/is_convertible.hpp>
 #include <boost/coroutine/coroutine.hpp>
 #include <boost/function.hpp>
 #include <boost/bind.hpp>

 using namespace std;



 typedef boost::coroutines::coroutine<int()> 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<false>::result_<boost::rv<boost::_bi::bind_t<void,
 void (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’:
 /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<boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/type_traits/is_function.hpp:102:
 instantiated from ‘boost::is_function<boost::rv<boost::_bi::bind_t<void,
 void (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 /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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>::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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59:
 instantiated from
 â€˜boost::disable_if<boost::is_convertible<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>,
 boost::coroutines::coroutine<int(), 0>::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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&’
 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<boost::rv<boost::_bi::bind_t<void,
 void (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’:
 /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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>::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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59:
 instantiated from
 â€˜boost::disable_if<boost::is_convertible<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>,
 boost::coroutines::coroutine<int(), 0>::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<boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>::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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59:
 instantiated from
 â€˜boost::disable_if<boost::is_convertible<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>,
 boost::coroutines::coroutine<int(), 0>::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<boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’:
 /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/utility/enable_if.hpp:59:
 instantiated from
 â€˜boost::disable_if<boost::is_convertible<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>,
 boost::coroutines::coroutine<int(), 0>::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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>::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<boost::is_convertible<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>,
 boost::coroutines::coroutine<int(), 0>::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<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >&,
 boost::rv<boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > > >&>’
 /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<int(),
 0>::coroutine(boost::_bi::bind_t<void, void
 (*)(boost::coroutines::coroutine<void(int), 1>&, int),
 boost::_bi::list2<boost::arg<1>, boost::_bi::value<int> > >)’
 /users/mtomer/mike/mysqlcpp_umbrella/build/externals/boost/boost_build/install/include/boost/coroutine/v1/coroutine.hpp:600:
 note: candidates are: boost::coroutines::coroutine<Signature,
 0>::coroutine(boost::rv<boost::coroutines::coroutine<Signature, 0> >&)
 [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<Signature,
 0>::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<Signature,
 0>::coroutine(boost::coroutines::coroutine<Signature, 0>&) [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.
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/10546>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:17 UTC