ofstream ne fonctionne pas sur linux

J’ai un code de test simple:

#include  #include  #include  int main() { std::ofstream strm = std::ofstream("test.txt"); strm << "TEST123"; strm.close(); return 0; } 

si je comstack cela sur windows cela fonctionne parfaitement. Cependant, lorsque je le comstack sur debian avec la commande suivante: g ++ – 4.7 -std = c ++ 0x -lpthread TestStream.cpp -ldl -o TestStream donne le résultat suivant: entrez la description de l'image ici

J’ai googlé cette erreur en vain. Est-ce que quelqu’un sait comment réparer ceci? J’utilise beaucoup de stream ofstreams dans mes projets et j’aimerais également le comstackr sur Linux.

EDIT: je l’ai compilé maintenant grâce à WinterMute, mais il affiche maintenant les fichiers vides. Comment puis-je réparer ça?

EDIT2: je ne sais pas pourquoi mais la deuxième fois, la compilation a fonctionné. THX!

Utilisation

 std::ofstream strm("test.txt"); 

Ce:

 std::ofstream strm = std::ofstream("test.txt"); 

requirejs un constructeur de copie que std::ofstream ne possède pas ou un constructeur de déplacement disponible uniquement depuis C ++ 11. GCC 4.7 n’a pas encore pris en charge C ++ 11, et c’est apparemment l’une des fonctionnalités manquantes.

Dans les commentaires, TC mentionne que les stream mobiles ne viendront pas dans gcc avant la version 5, dont la sortie est prévue pour cette année. Cela m’a pris par surprise, car gcc a réclamé une prise en charge totale de C ++ 11 avec la version 4.8.1 – ce qui est vrai pour le compilateur, mais pas pour libstdc ++. La réalité blesse.

Donc, il est peut-être intéressant de noter que libc ++ (une implémentation de bibliothèque standard c ++ affiliée à clang et llvm) implémente des stream mobiles, et que clang 3.5 et gcc 4.9 (ce sont ceux que j’ai ici et essayé) comstacknt le code original s’il est utilisé au lieu de libstdc ++.

 std::ofstream strm = std::ofstream("test.txt"); 

ofstream n’a pas de constructeur de copie.