Eclipse returns error for the code for which g++ doesn't
Building simple code (example is below) returns error on eclipse, while g++ from commandline doesn't. Both eclipse and g++ output executable that act the same (and the result meets my expectation). This is painful when the code isn't simple like the example I'm showing. Any idea is appreciated.
Env: Eclipse Indigo CDT, Ubuntu 10.10
Sample code:
//For test_boostStr()
#include <boost/algorithm/string.hpp>
#include <vector>
#include <iostream>
//For test_boost_foreach()
#include <boost/algorithm/string/trim.hpp>
#include <boost/foreach.hpp>
void test_boostStr() {
std::vector<std::string> strs;
boost::split(strs, "string to split", boost::is_any_of("\t "));
std::cout << strs.size() << std::endl;
// std::cout << strs.at(1) << std::endl;
}
void test_boost_foreach() {
//std::vector<std::string> namespaces_;
std::string namespaces_ = " tele op eration. ";
std::cout << "managing namespaces: ";
std::string out;
std::string s;
BOOST_FOREACH(s, namespaces_)
{
boost::trim(s);
out += s + " ";
}
std::cout << out.substr(0, out.size() - 1) << std::endl;
}
int main(void) {
test_boost_foreach();
}
Result of running the exec :
t e l e o p e r a t i o n .
Build result in the 'Problem' tab on Eclipse:
Description Resource Path Location Type
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<int> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0 *,#1> *, mpl_::bool_<1> *)
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<1> *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<#0 *> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0 *,#1> *, mpl_::bool_<1> *)
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<1> *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<#0 *> contain(#0 &, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<#0> contain(const #0 &, mpl_::bool_<1> *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::algorithm::detail::is_any_ofF<boost::range_value<#0>::type> is_any_of(const #0 &)
' Prove.cpp /ProvingGround line 12 Semantic Error
Invalid arguments '
Candidates are:
#0 & split(#0 &, #1 &, #2, enum boost::algorithm::token_compress_mode_type)
' Prove.cpp /ProvingGround line 12 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 开发者_开发百科Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
' Prove.cpp /ProvingGround line 23 Semantic Error
I haven't solved this issue (happens a lot particularly when I use boost it seems), but the root cause may lie in Eclipse' CDT plug-in according to this thread. Brutal workaround is, as discussed in the page, to turn off code analysis feature.
精彩评论