L'écriture de la chaîne de ostream

Lorsque j'essaie de compiler le code ci-dessous (dans un Qt 4.8 utilisant llvm-g++-4.2 (GCC) 4.2.1), j'obtiens l'erreur suivante:

../GLWidget.cpp:24:   instantiated from here
../GLWidget.cpp:24: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available 

Que fait cette erreur signifie, et que dois-je faire pour le réparer?

Code Source:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void testOStream(){
    filebuf fb;
    fb.open ("test.txt",ios::out);
    std::ostream os(&fb);
    std::string test("test");
    os << test; //This line has the problem
    fb.close();
}
Compile bien sur ideone
Ce qui devrait avoir compilé, mais essayez d'ajouter #include <ostream>.
Compile bien sur MSVC10
Il semble que ce soit assez communs de problème si vous êtes sur Mac OS X Mountain Lion, essayez d'ajouter -mmacosx-version-min=10.7 comme un drapeau de compilation si vous êtes
Il est intéressant de noter, avant C++11, iostream n'était pas tenu de #include <ostream>.

OriginalL'auteur Mortennobel | 2012-12-21