2013-01-20 15 views
5

Ho il seguente codice in Eclipse CDT (Juno SR1):errori spuri in Eclipse CDT: boost :: 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 non ha alcun problema con il codice. Eclipse, tuttavia, si lamenta delle due linee in.push(). Il messaggio di errore è lo stesso in entrambi i casi:

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 *) 
' 

Come posso risolvere o aggirare questo per fermare CDT lamentarsi?

+0

hm strano: so che CDT ha avuto alcuni problemi con diverse funzioni di boost ... ma tutti sono già stati risolti. Potresti provare a disattivare la funzione "analisi del codice" e/o ricostruire gli indici dei tuoi progetti? – Najzero

+1

La ricostruzione degli indici dei progetti non fa differenza. La disattivazione dell'analisi del codice impedisce a CDT di lamentarsi; tuttavia, preferirei mantenere l'analisi del codice se possibile. – NPE

+1

Quello che mi aspetterei è che lo std :: ifstream sia convertito implicitamente nella sua classe di base std :: istream, in modo che il secondo candidato corrisponda. Quello che vorrei provare è passare 'static_cast (file)' alla funzione push(). Se questo non funziona, l'unica cosa che potrei immaginare è una mancata corrispondenza nei parametri del template, ma sarebbe un errore davvero strano. D'altra parte, non ho ancora lavorato con CDT, quindi è difficile dirlo. –

risposta

0

Non vedo questo problema in Juno SR2, quindi probabilmente la soluzione più semplice sarebbe quella di aggiornare l'installazione di Eclipse, supponendo che tutti i plugin che si utilizzano siano compatibili con l'SR più recente.

Problemi correlati