IDE Netbeans: синтаксические ошибки C ++ на std :: tr1 - PullRequest
0 голосов
/ 12 января 2011

Скажи, что у меня есть что-то вроде:

#include <vector>
#include <algorithm>
#include <tr1/functional>

void bar(int value) {
   // do something with value
}

void foo() {
   // v is a std::vector<int>
   std::for_each(v.begin(), v.end(),
       std::tr1::bind(&bar, std::tr1::placeholders::_1)); // netbeans marks bind and placeholders
}

Netbeans помечает привязку / заполнитель как «Невозможно разрешить идентификатор ...». И это тоже не автозаполнение ...

Странный факт, у него нет проблем с автозаполнением #include <tr1/functional>, что, кажется, указывает что пути CodeAssistant настроены правильно. Это не отмечает _1 в std::tr1::placeholders::_1 также как «невозможно разрешить ...».

Код компилируется нормально.

Любые советы о том, что настраивать / искать? Очень раздражает, когда на отличном коде написано много «ошибок».

Спасибо

1 Ответ

0 голосов
/ 12 января 2011

Я склонен думать, что синтаксический анализатор Netbeans не может правильно проанализировать некоторые вещи в std::tr1.

std::tr1 не является частью C ++ 03, но, скорее всего, будет частью C ++ 0x; по этой причине во многих реализациях STL для его реализации используются другие функции C ++ 0x, например, std::tr1::bind, предоставляемый GCC 4.5.2, реализован как функция шаблона с переменным числом аргументов.

Если синтаксический анализатор Netbeans еще не поддерживает шаблоны переменных, он не сможет его проанализировать, и в результате вы получите.

У меня похожие проблемы с QtCreator (который даже не поддерживает псевдонимы пространства имен ).

В этом случае вам нужно только дождаться обновления. Вы можете отправить сообщение об ошибке, если оно еще не было отправлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...