私は多態的なインターフェースを持っています
struct Interface {
Interface(SomeType& other)
: range([=](){ return other.my_range(); }), /*...*/ {}
Interface(SomeOtherType& other)
: range([=](){ return other.some_range(); }), /*...*/ {}
const std::function<Range(void)> range;
/// ...
};
両方の範囲の要素は同じ型 (例: ) ですが、 byと by によってint返される型は異なります。たとえば、一方が aで、もう一方が aです。インターフェイスには、単一のタイプが必要です。my_range()some_range()filtered counting rangetransformed filtered counting rangeRange
使用してみましboost::any_rangeたが、パフォーマンスが大幅に低下します。vector範囲要素を a にコピーして、代わりにベクトルを返す必要は避けたいと思います。
any_rangeコピーの代替手段はありますか?