私は多態的なインターフェースを持っています
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 range
transformed filtered counting range
Range
使用してみましboost::any_range
たが、パフォーマンスが大幅に低下します。vector
範囲要素を a にコピーして、代わりにベクトルを返す必要は避けたいと思います。
any_range
コピーの代替手段はありますか?