5
我在Eclipse CDT(朱諾SR1)下面的代碼:虛假的錯誤在Eclipse CDT:升壓:: iostreams的
#include <fstream>
#include <iostream>
#include <boost/iostreams/filter/gzip.hpp>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
int main()
{
using namespace std;
namespace io = boost::iostreams;
ifstream file("data.gz", ios_base::in | ios_base::binary);
io::filtering_streambuf<io::input> in;
in.push(io::gzip_decompressor()); // error here
in.push(file); // and here
}
g++ 4.7.2
與代碼沒有問題。然而,Eclipse卻抱怨兩條in.push()
這兩條線。錯誤消息在兩種情況下都是相同的:
Invalid arguments '
Candidates are:
void push(std::basic_streambuf<#10000,#10001> &, ?, ?)
void push(std::basic_istream<#10000,#10001> &, ?, ?)
void push(std::basic_ostream<#10000,#10001> &, ?, ?)
void push(std::basic_iostream<#10000,#10001> &, ?, ?)
void push(const boost::iterator_range<#10000> &, ?, ?)
void push(const boost::iostreams::pipeline<#10000,#10001> &)
void push(const #10000 &, ?, ?, boost::disable_if<boost::iostreams::is_std_io<#10000>,void>::type *)
'
如何修復或解決此問題以停止CDT抱怨?
hm奇怪:我知道CDT在幾個增強功能方面有一些問題......但所有這些都是現在修復的。你可以嘗試禁用「代碼分析」功能,或重建你的項目索引? – Najzero
重建項目指標沒有區別。禁用代碼分析可以阻止CDT投訴;不過,如果可能的話,我寧願保留代碼分析。 – NPE
我期望的是std :: ifstream被隱式轉換爲它的基類std :: istream,以便第二個候選匹配。我會嘗試將'static_cast(file)'傳遞給push()函數。如果這不起作用,我能想象的唯一事情就是模板參數不匹配,但那將是一個非常奇怪的錯誤。另一方面,我還沒有和CDT合作過,所以很難說。 –