我有一个多态接口
struct Interface {
Interface(SomeType& other)
: range([=](){ return other.my_range(); }), /*...*/ {}
Interface(SomeOtherType& other)
: range([=](){ return other.some_range(); }), /*...*/ {}
const std::function<Range(void)> range;
/// ...
};
两个范围内的元素属于相同类型(例如int
),但由my_range()
和 by返回的类型some_range()
不同,例如一个可以是 a filtered counting range
,另一个可以是 a transformed filtered counting range
。对于接口,我需要一种Range
类型。
我试过使用boost::any_range
,但性能明显更差。我想避免将范围元素复制到 avector
并返回向量。
有没有替代品any_range
和复制品?