CDT - wywala się na poprawnym kodzie

0

Dajmy sobie taki kod:

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>

using namespace std;

int main()
{
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    BOOST_FOREACH(int x, vec)
        cout << x << endl;
    return 0;
}

Eclipse twierdzi, że kod zawiera błędy:

Invalid arguments ' Candidates are: ? * and_(#0 *, #1 *, #2 *) ? * and_(#0 *, #1 *) ' ... Semantic Error

Problem kompiluje się prawidłowo, ale Eclipse jak uparcie twierdzi, że są błędy. Tych błędów jest znacznie więcej, ale to raczej nie jest istotne w tym momencie.

0

Pewnie wykłada się na boostowych makrach, nic na to nie poradzisz.

Swoją drogą, zamiast tej boostowej protezy, w C++11 możesz użyć range based for. http://en.wikipedia.org/wiki/C%2B%2B11#Range-based_for-loop

0

Niestety nie mogę korzystać z C++11. Z pół roku temu korzystałem z tych makr i wszystko było ok. Nie wiem, co oni napsuli :/

0

Zobacz co się stanie kiedy usuniesz ten include i makro... Będzie wiadomo czy to na pewno boost czy może jakieś ustawienia parsera są złe/jakiś inny bug w configu/cdt

0

Tak, na pewno boost.
Męczę się już tym od dwóch dni. Patrzyłem do jakiego kodu te makra się rozwijają, ale do niczego sensownego nie mogę dojść. Prawdopodobnie to coś z indeksowaniem plików. We wcześniejszych wersjach CDT były 2 opcje do wyboru "fast index" i "full index". Teraz nie ma takiego wyboru, a przynajmniej nie ustawia się tego tak samo.

0

Wygląda na to, że wiedzą o tym błędzie...

https://bugs.eclipse.org/bugs/show_bug.cgi?id=332278

Tak się składa, że dopiero od 3.7 parser zgłasza te problemy. :-) Trzeba czekać...

1 użytkowników online, w tym zalogowanych: 0, gości: 1