Aparentemente, faltando sobrecarga de getline () tendo RRef para transmitir no GCC 4.7.2 e Clang 3.2

Eu corri para um erro de compilação inesperado ao tentar usargetline() com um objeto de fluxo temporário:

#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 não há sobrecarga degetline() existe que aceita uma referência rvalue para um objeto de fluxo. Se eu mudarmain() para usar um lvalue, ele compila e executa conforme o esperado:

int main()
{
    string input = "hello\nworld\nof\ndelimiters";

    string line;
    stringstream ss(inpupt);
    if (getline(ss, line)) // OK
    {
        cout << line << endl;
    }
}

Então eu dei uma olhada no C ++ 11 Standard e descobri (§ 21.4.8.9) que uma sobrecarga degetline() que leva uma referência de valor a um objeto de fluxodevemos estar presente.

Estou faltando alguma coisa óbvia, ou isso é um bug? O erro ocorre tanto com o GCC 4.7.2 como com o Clang 3.2. Eu não posso testar isso no VC no momento.

questionAnswers(1)

yourAnswerToTheQuestion