[ https://issues.apache.org/jira/browse/THRIFT-3937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15533432#comment-15533432 ]
James E. King, III edited comment on THRIFT-3937 at 9/29/16 5:36 PM: --------------------------------------------------------------------- VS2013 (and earlier) fix is in THRIFT-3936 which has a PR out for review already. I think we should support VS2013 so we should get that in before cutting 0.10.0 RC. I'm going to modify the cmake and autoconf environments to set WITH_PLUGIN=OFF if the compiler is gcc and older than 4.8. This probably doesn't have to hold up the release however so I have removed the dependency link in Jira for this one. was (Author: jking3): VS2010 fix is in THRIFT-3936 which has a PR out for review already. I'm going to modify the cmake and autoconf environments to set WITH_PLUGIN=OFF if the compiler is gcc and older than 4.8. This probably doesn't have to hold up the release however. > 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)