Re: boost::any_range с ссылкой на абстрактый класс
От: Evgeny.Panasyuk Россия  
Дата: 16.08.13 09:38
Оценка:
Здравствуйте, Voivoid, Вы писали:

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


clang этот код компилирует.
gcc обламывается. Такое впечатление что он где-то ссылку потерял по дороге instantiations:
/usr/local/include/boost/range/detail/any_iterator_interface.hpp:
    In instantiation of ‘struct boost::range_detail::any_single_pass_iterator_interface<IFooBar, boost::any_iterator_buffer<64ul> >’:

any_iterator_interface.hpp:73:16:
    required from ‘struct boost::range_detail::any_single_pass_iterator_interface<const IFooBar&, boost::any_iterator_buffer<64ul> >’

any_iterator_interface.hpp:99:16:
    required from ‘struct boost::range_detail::any_forward_iterator_interface<const IFooBar&, boost::any_iterator_buffer<64ul> >’
[...]
any_iterator_interface.hpp:90:31:
    error: cannot allocate an object of abstract type ‘IFooBar’
             virtual Reference dereference() const = 0;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.