我想使用 range-v3 拆分、反转,然后加入一个字符串。但是,下面的代码不会编译。
#include <range/v3/all.hpp>
#include <iostream>
using namespace ranges;
int main(int argc, char *argv[])
{
auto str = std::string("abc.def.ghi");
auto sv = str
| view::split('.')
| view::reverse
| view::join('.');
std::cout<<sv;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器输出:
error: invalid operands to binary expression ('decltype(pipeable_access::impl<view<reverse_fn> >::pipe(static_cast<ranges::v3::split_view<ranges::v3::iterator_range<std::_String_iterator<std::_String_val<std::_Simple_types<char> > >, std::_String_iterator<std::_String_val<std::_Simple_types<char> > > >, ranges::v3::view::split_fn::element_pred<std::basic_string<char, std::char_traits<char>, std::allocator<char> > &> > &&>(arg), pipe))' (aka 'void') and 'decltype(make_view(view_access::impl<join_fn>::bind(this->view_, static_cast<char &&>(ts))))' (aka 'view<ranges::v3::detail::pipeable_binder<std::_Binder<std::_Unforced, ranges::v3::view::join_fn &, const std::_Ph<1> &, char> > >'))
range\v3\view\any_view.hpp:60: candidate function not viable: cannot convert …Run Code Online (Sandbox Code Playgroud)