c++ - 将 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 参数没有设置任何约束(例如,我可以使用任何类型调用)
也不清楚为什么 bytes_to_read 在{ reader.read(5, ...) }
工作时需要位于顶部但{ reader.read(std::size_t, ...) }
不需要。
允许似乎可以,{ reader.read(std::same_as<std::size_t>, ...) }
因为这是可以限制返回类型的方式,但这也是错误的。