boost::any_range с ссылкой на абстрактый класс
От: Voivoid Россия  
Дата: 16.08.13 08:02
Оценка:
Хочется примерно следующего:

struct IFooBar {
    virtual void func() = 0;
};

typedef boost::any_range<IFooBar,
                         boost::random_access_traversal_tag,
                         const IFooBar&,
                         std::ptrdiff_t> FooBarRange;

void func( const FooBarRange& range ) {
}

int main() {
    std::vector<std::unique_ptr<IFooBar>> vec;
    func( vec | boost::adaptors::indirected );

    return 0;
}


Но всё это дело не компилируется из-за того, что IFooBar — абстрактный класс. Как бы поправить? Единственное, что пока приходит в голову — завернуть все в boost::reference_wrapper, но получается как-то не слишком эстетично
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.