sol2 icon indicating copy to clipboard operation
sol2 copied to clipboard

compile failed: sol::varidic_args::rbegin()[n]

Open etorth opened this issue 2 years ago • 0 comments

for code like

sol::varidic_args args;
...

auto last = args.rbegin()[0];
auto second_to_last = args.rbegin()[1];

This code fails. looks operator - doesn't get defined.


/usr/include/c++/11/bits/stl_iterator.h: In instantiation of ‘constexpr std::reverse_iterator<_Iterator> std::reverse_iterator<_Iterator>::operator+(std::reverse_iterator
<_Iterator>::difference_type) const [with _Iterator = sol::stack_iterator<sol::stack_proxy, false>; std::reverse_iterator<_Iterator>::difference_type = long int]’:
/usr/include/c++/11/bits/stl_iterator.h:368:24:   required from ‘constexpr std::reverse_iterator<_Iterator>::reference std::reverse_iterator<_Iterator>::operator[](std::r
everse_iterator<_Iterator>::difference_type) const [with _Iterator = sol::stack_iterator<sol::stack_proxy, false>; std::reverse_iterator<_Iterator>::reference = sol::stac
k_proxy; std::reverse_iterator<_Iterator>::difference_type = long int]’
/home/anhong/mir2x/server/src/serverluacoroutinerunner.cpp:134:9:   required from here
/usr/include/c++/11/bits/stl_iterator.h:324:41: error: no match for ‘operator-’ (operand types are ‘const sol::stack_iterator<sol::stack_proxy, false>’ and ‘std::reverse_
iterator<sol::stack_iterator<sol::stack_proxy, false> >::difference_type’ {aka ‘long int’})
  324 |       { return reverse_iterator(current - __n); }
      |                                 ~~~~~~~~^~~~~

etorth avatar Jun 09 '23 08:06 etorth