【发布时间】:2013-06-25 12:58:53
【问题描述】:
我有一个多态接口
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() 和some_range() 返回的类型不同,例如一个可以是filtered counting range,另一个可以是transformed filtered counting range。对于界面,我需要一个 Range 类型。
我尝试过使用boost::any_range,但性能明显更差。我想避免将范围元素复制到 vector 并返回向量。
any_range 和复制有什么替代方法吗?
【问题讨论】:
标签: c++ interface polymorphism boost-range