将 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 (将#修改为@)