[
https://issues.apache.org/jira/browse/THRIFT-3937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15661791#comment-15661791
]
James E. King, III commented on THRIFT-3937:
--------------------------------------------
I think to resolve this issue we need to make sure the cmake build environment
does the right thing, and we also need to update the web site to indicate that
gcc-4.8 or later is recommended because right now it says 4.2 or later.
> Cannot compile 0.10.0 development tip with gcc-4.6.x
> ----------------------------------------------------
>
> Key: THRIFT-3937
> URL: https://issues.apache.org/jira/browse/THRIFT-3937
> Project: Thrift
> Issue Type: Bug
> Components: Build Process
> Affects Versions: 0.10.0
> Environment: Ubuntu 12.04.5 LTS with gcc-4.6.3 and boost 1.53.0,
> Ubuntu 14.04.2 LTS with gcc-4.6.4 and boost-1.54.0
> Reporter: James E. King, III
> Assignee: Aki Sukegawa
>
> While building the tip using cmake:
> {noformat}
> [ 51%] Building CXX object
> compiler/cpp/CMakeFiles/thriftc_static.dir/src/thrift/plugin/plugin_output.cc.o
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_enum, To =
> apache::thrift::plugin::t_enum]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:181:3:
> error: no matching function for call to
> ‘transform(std::vector<t_enum_value*>::const_iterator,
> std::vector<t_enum_value*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_enum_value>
> >, <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:181:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From =
> t_const_value, To = apache::thrift::plugin::t_const_value]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:212:5:
> error: no matching function for call to
> ‘transform(std::vector<t_const_value*>::const_iterator,
> std::vector<t_const_value*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_const_value>
> >, <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:212:5:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_struct, To
> = apache::thrift::plugin::t_struct]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:235:3:
> error: no matching function for call to
> ‘transform(std::vector<t_field*>::const_iterator,
> std::vector<t_field*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_field> >,
> <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:235:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_service,
> To = apache::thrift::plugin::t_service]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:267:3:
> error: no matching function for call to
> ‘transform(std::vector<t_function*>::const_iterator,
> std::vector<t_function*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_function> >,
> <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:267:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_program,
> To = apache::thrift::plugin::t_program]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:360:3:
> error: no matching function for call to
> ‘transform(std::vector<t_program*>::iterator,
> std::vector<t_program*>::iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_program> >,
> <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:360:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> make[2]: ***
> [compiler/cpp/CMakeFiles/thriftc.dir/src/thrift/plugin/plugin_output.cc.o]
> Error 1
> make[1]: *** [compiler/cpp/CMakeFiles/thriftc.dir/all] Error 2
> make[1]: *** Waiting for unfinished jobs....
> [ 52%] Building CXX object
> compiler/cpp/CMakeFiles/thriftc_static.dir/src/thrift/plugin/plugin.cc.o
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_enum, To =
> apache::thrift::plugin::t_enum]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:181:3:
> error: no matching function for call to
> ‘transform(std::vector<t_enum_value*>::const_iterator,
> std::vector<t_enum_value*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_enum_value>
> >, <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:181:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From =
> t_const_value, To = apache::thrift::plugin::t_const_value]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:212:5:
> error: no matching function for call to
> ‘transform(std::vector<t_const_value*>::const_iterator,
> std::vector<t_const_value*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_const_value>
> >, <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:212:5:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_struct, To
> = apache::thrift::plugin::t_struct]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:235:3:
> error: no matching function for call to
> ‘transform(std::vector<t_field*>::const_iterator,
> std::vector<t_field*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_field> >,
> <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:235:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_service,
> To = apache::thrift::plugin::t_service]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:267:3:
> error: no matching function for call to
> ‘transform(std::vector<t_function*>::const_iterator,
> std::vector<t_function*>::const_iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_function> >,
> <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:267:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc: In
> function ‘void plugin_output::convert(From*, To&) [with From = t_program,
> To = apache::thrift::plugin::t_program]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:360:3:
> error: no matching function for call to
> ‘transform(std::vector<t_program*>::iterator,
> std::vector<t_program*>::iterator,
> std::back_insert_iterator<std::vector<apache::thrift::plugin::t_program> >,
> <unresolved overloaded function type>)’
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin_output.cc:360:3:
> note: candidates are:
> /usr/include/c++/4.6/bits/stl_algo.h:4871:5: note: template<class _IIter,
> class _OIter, class _UnaryOperation> _OIter std::transform(_IIter, _IIter,
> _OIter, _UnaryOperation)
> /usr/include/c++/4.6/bits/stl_algo.h:4907:5: note: template<class _IIter1,
> class _IIter2, class _OIter, class _BinaryOperation> _OIter
> std::transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation)
> make[2]: ***
> [compiler/cpp/CMakeFiles/thriftc_static.dir/src/thrift/plugin/plugin_output.cc.o]
> Error 1
> make[2]: *** Waiting for unfinished jobs....
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc: In function
> ‘void apache::thrift::plugin::convert(const From&, To*) [with From =
> apache::thrift::plugin::t_enum, To = t_enum]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc:220:86: error: no
> match for call to ‘(const
> boost::range_detail::forwarder<boost::range_detail::transform_holder>)
> (<unresolved overloaded function type>)’
> /usr/include/boost/range/adaptor/argument_fwd.hpp:42:16: note: candidate is:
> /usr/include/boost/range/adaptor/argument_fwd.hpp:45:23: note: template<class
> T> Holder<T> boost::range_detail::forwarder::operator()(T) const [with T = T,
> Holder = boost::range_detail::transform_holder]
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc: In function
> ‘void apache::thrift::plugin::convert(const From&, To*) [with From =
> apache::thrift::plugin::t_const_value, To = t_const_value]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc:257:89: error: no
> match for call to ‘(const
> boost::range_detail::forwarder<boost::range_detail::transform_holder>)
> (<unresolved overloaded function type>)’
> /usr/include/boost/range/adaptor/argument_fwd.hpp:42:16: note: candidate is:
> /usr/include/boost/range/adaptor/argument_fwd.hpp:45:23: note: template<class
> T> Holder<T> boost::range_detail::forwarder::operator()(T) const [with T = T,
> Holder = boost::range_detail::transform_holder]
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc: In function
> ‘void apache::thrift::plugin::convert(const From&, To*) [with From =
> apache::thrift::plugin::t_struct, To = t_struct]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc:284:79: error: no
> match for call to ‘(const
> boost::range_detail::forwarder<boost::range_detail::transform_holder>)
> (<unresolved overloaded function type>)’
> /usr/include/boost/range/adaptor/argument_fwd.hpp:42:16: note: candidate is:
> /usr/include/boost/range/adaptor/argument_fwd.hpp:45:23: note: template<class
> T> Holder<T> boost::range_detail::forwarder::operator()(T) const [with T = T,
> Holder = boost::range_detail::transform_holder]
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc: In function
> ‘void apache::thrift::plugin::convert(const From&, To*) [with From =
> apache::thrift::plugin::t_service, To = t_service]’:
> /home/jking/thrift/compiler/cpp/src/thrift/plugin/plugin.cc:311:84: error: no
> match for call to ‘(const
> boost::range_detail::forwarder<boost::range_detail::transform_holder>)
> (<unresolved overloaded function type>)’
> /usr/include/boost/range/adaptor/argument_fwd.hpp:42:16: note: candidate is:
> /usr/include/boost/range/adaptor/argument_fwd.hpp:45:23: note: template<class
> T> Holder<T> boost::range_detail::forwarder::operator()(T) const [with T = T,
> Holder = boost::range_detail::transform_holder]
> make[2]: ***
> [compiler/cpp/CMakeFiles/thriftc_static.dir/src/thrift/plugin/plugin.cc.o]
> Error 1
> make[1]: *** [compiler/cpp/CMakeFiles/thriftc_static.dir/all] Error 2
> {noformat}
> Workaround for gcc before 4.8 is to build using WITH_PLUGIN=OFF.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)