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