首页 > 解决方案 > 将 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>;
};

但是它有多个问题:

也不清楚为什么 bytes_to_read 在{ reader.read(5, ...) }工作时需要位于顶部但{ reader.read(std::size_t, ...) }不需要。

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

标签: c++iteratorconcept

解决方案


推荐阅读