Aparentemente, falta la sobrecarga de getline () que lleva RRef a la transmisión en GCC 4.7.2 y Clang 3.2
Me encontré con un error de compilación inesperado al intentar usargetline()
con un objeto de flujo temporal:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string input = "hello\nworld\nof\ndelimiters";
string line;
if (getline(stringstream(input), line)) // ERROR!
{
cout << line << endl;
}
}
Parece que no hay sobrecarga degetline()
existe que acepta una referencia de valor a un objeto de flujo. Si cambiomain()
para usar un valor lime, se compila y se ejecuta como se espera:
int main()
{
string input = "hello\nworld\nof\ndelimiters";
string line;
stringstream ss(inpupt);
if (getline(ss, line)) // OK
{
cout << line << endl;
}
}
Así que eché un vistazo al estándar C ++ 11 y descubrí (§ 21.4.8.9) que una sobrecarga degetline()
que toma una referencia rvalue a un objeto de flujodebería estar.
¿Me estoy perdiendo algo obvio, o esto es un error? El error ocurre tanto con GCC 4.7.2 como con Clang 3.2. No puedo probar esto en VC en este momento.