opencog / moses

MOSES Machine Learning: Meta-Optimizing Semantic Evolutionary Search. See also AS-MOSES https://github.com/opencog/asmoses but kept to guaranty backward compatibility.

Home Page:https://wiki.opencog.org/w/Meta-Optimizing_Semantic_Evolutionary_Search

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build fails due to ambiguous call with boost on some systems

xloem opened this issue · comments

commented

This problem is also described at https://stackoverflow.com/questions/52122093/error-call-of-overloaded-distance-is-ambiguous . The link recommends replacing the call to distance with std::distance. I suppose boost::distance would also work.

I'm having this issue locally with boost 1.69 .

Building CXX object moses/comboreduct/CMakeFiles/comboreduct.dir/table/table.cc.o
/home/user/src/moses/moses/comboreduct/table/table.cc: In member function ‘int opencog::combo::ITable::get_column_offset(const string&) const’:
/home/user/src/moses/moses/comboreduct/table/table.cc:249:40: error: call of overloaded ‘distance(std::vector<std::basic_string<char> >::iterator, __gnu_cxx::__normal_iterator<std::basic_string<char>*, std::vector<std::basic_string<char> > >&)’ is ambiguous
     return distance(labels.begin(), pos);
                                        ^
/home/user/src/moses/moses/comboreduct/table/table.cc:249:40: note: candidates are:
In file included from /usr/local/include/boost/range/distance.hpp:18:0,
                 from /usr/local/include/boost/range/functions.hpp:21,
                 from /usr/local/include/boost/range/iterator_range_core.hpp:38,
                 from /usr/local/include/boost/range/iterator_range.hpp:13,
                 from /usr/local/include/boost/range/detail/range_return.hpp:14,
                 from /usr/local/include/boost/range/algorithm/adjacent_find.hpp:17,
                 from /home/user/src/moses/moses/comboreduct/table/table.cc:33:
/usr/local/include/boost/iterator/distance.hpp:49:9: note: typename boost::iterators::iterator_difference<Iterator>::type boost::iterators::distance_adl_barrier::distance(SinglePassIterator, SinglePassIterator) [with SinglePassIterator = __gnu_cxx::__normal_iterator<std::basic_string<char>*, std::vector<std::basic_string<char> > >; typename boost::iterators::iterator_difference<Iterator>::type = long int]
         distance(SinglePassIterator first, SinglePassIterator last)
         ^
In file included from /usr/include/c++/4.8.2/bits/stl_algobase.h:66:0,
                 from /usr/include/c++/4.8.2/bits/char_traits.h:39,
                 from /usr/include/c++/4.8.2/string:40,
                 from /usr/include/c++/4.8.2/bits/locale_classes.h:40,
                 from /usr/include/c++/4.8.2/bits/ios_base.h:41,
                 from /usr/include/c++/4.8.2/iomanip:40,
                 from /home/user/src/moses/moses/comboreduct/table/table.cc:29:
/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h:114:5: note: typename std::iterator_traits<_Iterator>::difference_type std::distance(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<std::basic_string<char>*, std::vector<std::basic_string<char> > >; typename std::iterator_traits<_Iterator>::difference_type = long int]
     distance(_InputIterator __first, _InputIterator __last)
     ^
make[2]: *** [moses/comboreduct/CMakeFiles/comboreduct.dir/table/table.cc.o] Error 1
make[1]: *** [moses/comboreduct/CMakeFiles/comboreduct.dir/all] Error 2
make: *** [all] Error 2

Care to make a pull request? Please use std::distance.