LINUX.ORG.RU

Помогите скомпилировать

 ,


0

2

Есть такой код:

    template< class Container >
    void Initialize( const Container &hosts )
    {
        typename Container::const_iterator it = hosts.begin();
        for( ; it != hosts.end(); ++it )
        {
            //workers_.AddWorker( new Worker( (const std::string &)( *it ) ) );
        }
    }
Его используют так:
std::list< std::string > hosts;
mgr.Initialize( hosts );
На фреебзд с gcc 4.2.1 выдает такую ошибку
error: conversion from std::_List_const_iterator<...> to non-scalar type std::_Rb_tree_const_iterator<...> requested
на строке:
typename Container::const_iterator it = hosts.begin();

Rb_tree

либо делай минимальный самостоятельный пример, либо смотри где у тебя std::map или std::set используется

wota ★★ ()
Последнее исправление: wota (всего исправлений: 1)

error: conversation from std::_List_const_iterator<...> to non-scalar type std::_Rb_tree_const_iterator<...> requested

Отправь бздишный гцц к логопеду!

UVV ★★★★★ ()
Ответ на: комментарий от UVV

Поправил, опечатался, бо фряха на виртуалке. Не на десктопе же

nerdogeek ()
Ответ на: комментарий от tailgunner

Если закомментировать эту строчку, то все равно ошибка

nerdogeek ()

Пользоваться так контейнерами не принято, обычно делают шаблон от типа итератора и передают begin и end в функцию.

O02eg ★★★★★ ()
Ответ на: комментарий от unsigned

Так вот это самое странное. Хз почему так, на gcc 4.6, 4.7, 4.8 без ошибок

nerdogeek ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.