range-v3 iota_view迭代器用64位初始值时非随机访问,如何使其支持?
问题:range-v3的iota_view 64位初始值迭代器无随机访问特性
经测试发现,当使用64位类型(如std::size_t、long、ssize_t)作为初始值时,range-v3的iota_view迭代器不具备随机访问特性;而GCC标准库的iota_view无此问题,且range-v3使用32位初始值(如int)时可正常支持随机访问。
测试代码如下(基于GCC 13及range-v3 trunk版本):
#if 1 // range v3 #include <range/v3/all.hpp> namespace rng = ::ranges; #else #include <ranges> namespace rng = std::ranges; #endif int main() { // works // int base = 100; // does not work //std::size_t base = 100; //long base = 100; ssize_t base = 100; static_assert(std::random_access_iterator<decltype(rng::begin(rng::views::iota(base)))>); }
请问是否存在方法,使range-v3的iota_view迭代器在使用64位初始值时支持随机访问?
内容的提问来源于stack exchange,提问作者rscohn2
相关产品推荐
相关产品推荐

