erreure de compilation bizarre
Salut,
je test une copie à la volé d'un stream vers un autre. Alors si je fais ça, ça marche
Code:
1 2 3 4
| ifstream ifs ("in.txt");
copy(istream_iterator<int,char>(ifs),
istream_iterator<int,char>(),
ostream_iterator<int>(std::cout, " ")); |
en revanche ça, ça ne marche pas
Code:
1 2 3 4
|
copy(istream_iterator<int,char>(ifstream("in.txt")),
istream_iterator<int,char>(),
ostream_iterator<int>(std::cout, " ")); |
j'ai un message du style
Citation:
g++ -O2 main.cpp -o main.exe
main.cpp: In function `int main()':
main.cpp:14: error: no matching function for call to `std::istream_iterator<int, char, std::char_traits<char>, ptrdiff_t>::istream_iterator(std::ifstream)'
C:/MingW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stream_iterator.h:71: note: candidates are: std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(const std::istream_iterator<_Tp, _CharT, _Traits, _Dist>&) [with _Tp = int, _CharT = char, _Traits = std::char_traits<char>, _Dist = ptrdiff_t]
C:/MingW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stream_iterator.h:67: note: std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(std::basic_istream<_CharT, _Traits>&) [with _Tp = int, _CharT = char, _Traits = std::char_traits<char>, _Dist = ptrdiff_t]
C:/MingW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stream_iterator.h:63: note: std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator() [with _Tp = int, _CharT = char, _Traits = std::char_traits<char>, _Dist = ptrdiff_t]
je ne comprend le probleme, meme en lisant le message du compilo...
Autre question, la deuxieme ecriture (en supposant qu'elle marche) serait-elle déconseillée? parce que dans ce deuxieme cas je pourrais pas faire explicitement appel à .close() je me trompe?