Ошибка при компиляции std :: map с boost :: shared_ptr - PullRequest
0 голосов
/ 07 декабря 2011

Я пытаюсь скомпилировать мой код в vs2005. Я использую std :: map и boost :: shared_ptr (v1.47.0) Мой код выглядит примерно так

struct B {
    int a;
}
typedef boost::shared_ptr<B> K;

std::map<const std::string, K > mymap;

//some code

std::map<const std::string, K >::iterator it;
for (it = mymap.begin(); it < mymap.end(); it++ )
{
     //do something
}

Компилятор выдает ошибку в операторе for. Вот ошибка

ошибка C2784: 'bool boost :: operator <(const boost :: intrusive_ptr &, const boost :: intrusive_ptr &)': не удалось вывести аргумент шаблона для 'const boost :: intrusive_ptr &' из 'дерева std :: _ <_Traits> :: итератор.

Любая помощь приветствуется. Спасибо.

1 Ответ

1 голос
/ 07 декабря 2011

Вы используете неправильный оператор для проверки по mymap.end(). Измените цикл на

for (it = mymap.begin(); it != mymap.end(); it++ )
...