Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build failure on FreeBSD, gcc9 #8

Open
ko56 opened this issue Mar 3, 2020 · 1 comment
Open

build failure on FreeBSD, gcc9 #8

ko56 opened this issue Mar 3, 2020 · 1 comment

Comments

@ko56
Copy link

ko56 commented Mar 3, 2020

Hi, I am trying to build SMTPlan on FreeBSD 12.1, gcc9, cmake 3.15.5, boost 1.72, piranha 0.11_7.

This is what happens:

[ 50%] Building CXX object CMakeFiles/SMTPlan.dir/src/VALfiles/src/SimpleEval.cpp.o [ 56%] Building CXX object CMakeFiles/SMTPlan.dir/src/VALfiles/src/TIM.cpp.o [ 62%] Building CXX object CMakeFiles/SMTPlan.dir/src/VALfiles/src/TimSupport.cpp.o In file included from /usr/local/lib/gcc9/include/c++/set:62, from /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:32, from /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/src/TimSupport.cpp:28: /usr/local/lib/gcc9/include/c++/bits/stl_multiset.h: In instantiation of 'std::multiset<_Key, _Compare, _Alloc>::multiset(_InputIterator, _InputIterator) [with _InputIterator = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >; _Key = TIM::Property*; _Compare = std::less<TIM::Property*>; _Alloc = std::allocator<TIM::Property*>]': /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:273:67: required from 'TIM::PropertyState::PropertyState(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:281:9: required from 'static TIM::PropertyState* TIM::PropertyState::retrieve(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/src/TimSupport.cpp:1392:36: required from here /usr/local/lib/gcc9/include/c++/bits/stl_multiset.h:189:4: error: no matching function for call to 'std::_Rb_tree<TIM::Property*, TIM::Property*, std::_Identity<TIM::Property*>, std::less<TIM::Property*>, std::allocator<TIM::Property*> >::_M_insert_range_equal(TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >&, TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >&)' 189 | { _M_t._M_insert_range_equal(__first, __last); } | ^~~~ In file included from /usr/local/lib/gcc9/include/c++/map:60, from /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/ptree.h:55, from /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/FastEnvironment.h:36, from /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/src/TimSupport.cpp:27: /usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1126:2: note: candidate: 'template<class _InputIterator> std::__enable_if_t<std::is_same<_Val, typename std::iterator_traits<_InputIterator>::value_type>::value> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_range_equal(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = TIM::Property*; _Val = TIM::Property*; _KeyOfValue = std::_Identity<TIM::Property*>; _Compare = std::less<TIM::Property*>; _Alloc = std::allocator<TIM::Property*>]' 1126 | _M_insert_range_equal(_InputIterator __first, _InputIterator __last) | ^~~~~~~~~~~~~~~~~~~~~ /usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1126:2: note: template argument deduction/substitution failed: /usr/local/lib/gcc9/include/c++/bits/stl_tree.h: In substitution of 'template<class _InputIterator> std::__enable_if_t<std::is_same<TIM::Property*, typename std::iterator_traits<_Iterator>::value_type>::value, void> std::_Rb_tree<TIM::Property*, TIM::Property*, std::_Identity<TIM::Property*>, std::less<TIM::Property*>, std::allocator<TIM::Property*> >::_M_insert_range_equal<_InputIterator>(_InputIterator, _InputIterator) [with _InputIterator = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]': /usr/local/lib/gcc9/include/c++/bits/stl_multiset.h:189:4: required from 'std::multiset<_Key, _Compare, _Alloc>::multiset(_InputIterator, _InputIterator) [with _InputIterator = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >; _Key = TIM::Property*; _Compare = std::less<TIM::Property*>; _Alloc = std::allocator<TIM::Property*>]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:273:67: required from 'TIM::PropertyState::PropertyState(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:281:9: required from 'static TIM::PropertyState* TIM::PropertyState::retrieve(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/src/TimSupport.cpp:1392:36: required from here /usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1126:2: error: no type named 'value_type' in 'struct std::iterator_traits<TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> > >' /usr/local/lib/gcc9/include/c++/bits/stl_multiset.h: In instantiation of 'std::multiset<_Key, _Compare, _Alloc>::multiset(_InputIterator, _InputIterator) [with _InputIterator = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >; _Key = TIM::Property*; _Compare = std::less<TIM::Property*>; _Alloc = std::allocator<TIM::Property*>]': /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:273:67: required from 'TIM::PropertyState::PropertyState(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:281:9: required from 'static TIM::PropertyState* TIM::PropertyState::retrieve(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/src/TimSupport.cpp:1392:36: required from here /usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1135:2: note: candidate: 'template<class _InputIterator> std::__enable_if_t<(! std::is_same<_Val, typename std::iterator_traits<_InputIterator>::value_type>::value)> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_range_equal(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = TIM::Property*; _Val = TIM::Property*; _KeyOfValue = std::_Identity<TIM::Property*>; _Compare = std::less<TIM::Property*>; _Alloc = std::allocator<TIM::Property*>]' 1135 | _M_insert_range_equal(_InputIterator __first, _InputIterator __last) | ^~~~~~~~~~~~~~~~~~~~~ /usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1135:2: note: template argument deduction/substitution failed: /usr/local/lib/gcc9/include/c++/bits/stl_tree.h: In substitution of 'template<class _InputIterator> std::__enable_if_t<(! std::is_same<TIM::Property*, typename std::iterator_traits<_Iterator>::value_type>::value), void> std::_Rb_tree<TIM::Property*, TIM::Property*, std::_Identity<TIM::Property*>, std::less<TIM::Property*>, std::allocator<TIM::Property*> >::_M_insert_range_equal<_InputIterator>(_InputIterator, _InputIterator) [with _InputIterator = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]': /usr/local/lib/gcc9/include/c++/bits/stl_multiset.h:189:4: required from 'std::multiset<_Key, _Compare, _Alloc>::multiset(_InputIterator, _InputIterator) [with _InputIterator = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >; _Key = TIM::Property*; _Compare = std::less<TIM::Property*>; _Alloc = std::allocator<TIM::Property*>]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:273:67: required from 'TIM::PropertyState::PropertyState(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/include/TimSupport.h:281:9: required from 'static TIM::PropertyState* TIM::PropertyState::retrieve(TIM::TIMAnalyser*, TI, TI) [with TI = TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> >]' /usr/home/ko/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/src/VALfiles/src/TimSupport.cpp:1392:36: required from here /usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1117:16: error: no type named 'value_type' in 'struct std::iterator_traits<TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> > >' 1117 | __enable_if_t<!__same_value_type<_InputIterator>::value> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gmake[2]: *** [CMakeFiles/SMTPlan.dir/build.make:180: CMakeFiles/SMTPlan.dir/src/VALfiles/src/TimSupport.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/SMTPlan.dir/all] Error 2 gmake: *** [Makefile:130: all] Error 2 [ko@kzin ~/build/KCL-Planning-SMTPlan-edda8a8/SMTPlan/build]$

C++ is not my strong point. Your help would be appreciated.

@jbalint
Copy link

jbalint commented Sep 23, 2022

The salient error is:

/usr/local/lib/gcc9/include/c++/bits/stl_tree.h:1126:2: error: no type named 'value_type' in
'struct std::iterator_traits<TIM::getConditionally<std::_Rb_tree_const_iterator<TIM::Property*> > >'

Adding the following to the end of TimSupport.cpp should fix it:

namespace std {
template <typename TI> struct iterator_traits<TIM::getConditionally<TI>> {
  typedef typename TI::value_type value_type;
};
} // namespace std

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants