[英]ranges v3 any_view & constant
以下琐碎的代码失败了:
#include <vector>
#include <range/v3/all.hpp>
int main()
{
std::vector<int> const v{ 1, 2, 3, 4 };
ranges::any_view<int, ranges::category::bidirectional |
ranges::category::sized> const a{v};
ranges::begin(a);
}
但如果在这里删除常量:
a { v };
一切都好。 这是一个错误吗? 还是我不明白any_view
的语义。
UPD:这是 MSVC 16.9.0 Preview 1.0 编译器。
ranges::begin(a)
调用
template<typename R>
ranges::_begin_::fn::operator ()(R && r)
期望可修改或 r 值参数r
。
a
声明为const a{v}
将调用ranges::_begin_::fn::operator ()<const ranges::any_view<...>>(const ranges::any_view<...> && r)
即不可能,因为它会将 r 值a
绑定到 l 值参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.