微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 output_iterator 概念指定为概念内的函数参数

如何解决将 output_iterator 概念指定为概念内的函数参数

我正在尝试编写一些需要实现“读取”方法的概念示例。这种“读取”方法需要读取多个字节,并需要一个输出迭代器来写入数据。 目前看起来是这样的:

template <typename T>
concept DataSourceReader = requires (T reader,std::size_t bytes_to_read) {
    { reader.read(bytes_to_read,std::output_iterator<std::uint8_t>) } -> std::same_as<std::size_t>;
};

但是它有多个问题:

  • std::output_iterator 需要 2 个模板参数,但我不知道它们是什么
  • std::output_iterator 参数没有设置任何约束(例如,我可以使用任何类型调用

{ reader.read(5,...) } 有效而 { reader.read(std::size_t,...) } 无效时,为什么 bytes_to_read 需要排在最前面也不清楚。

允许 { reader.read(std::same_as<std::size_t>,...) } 似乎没问题,因为这是限制返回类型的方式,但这也是错误的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。