繁体   English   中英

范围 v3 any_view & 常量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM