为什么直接初始化对 std::views::iota 不起作用?

问题描述 投票:0回答:1

为什么这是非法声明?

> std::views::iota r(0, 10);
error: expected ‘;’ before ‘r’

但这有效

> auto r = std::views::iota(0, 10);
c++ std-ranges iota direct-initialization
1个回答
2
投票

views::iota
是一个自定义点对象,它是一个重载
operator()
并返回
ranges::iota_view
对象的函数对象。

ranges::iota_view
views::iota
的实现细节,它是一个类类型。所以你的意思可能是

std::ranges::iota_view r(0, 10);

但是,您应该始终更喜欢使用

views::meow
而不是
ranges::meow_view

© www.soinside.com 2019 - 2024. All rights reserved.