c++ c++11 filesystems g++ libstdc++

c++ - ¿Por qué no puedo usar<experimental/filesystem> con g++ 4.9.2?



c++11 filesystems (1)

Si observamos el estado de libstdc ++ , vemos que sí tienen soporte para el sistema de archivos TS:

Papel | Título | Estado

........

N4100 | Sistema de archivos | Y

pero dice:

Esta página describe el soporte de C ++ 14 y la biblioteca TS en la línea principal GCC SVN, no en ninguna versión en particular.

y al probar esto en Wandbox , parece que esta biblioteca solo está disponible en la última rama de desarrollo 6.0 y no puedo encontrar más detalles más allá de eso.

Actualizar

Actualización de Jonathan Wakely:

Ahora también está disponible en la rama gcc-5 en Subversion, y se incluirá en la versión GCC 5.3 más adelante este año.

También de acuerdo con la respuesta de Jonathan Wakely aquí necesitamos compilar usando -lstdc++fs . Esto se trata en la sección de enlaces de los documentos de gcc :

GCC 5.3 incluye una implementación de la biblioteca del sistema de archivos definida por la especificación técnica ISO / IEC TS 18822: 2015. Debido a que esta es una extensión de biblioteca experimental, que no forma parte del estándar de C ++, se implementa en una biblioteca separada, libstdc ++ fs.a, y no hay una biblioteca compartida para ella. Para usar la biblioteca debe incluir y vincular con -lstdc ++ fs. La implementación de la biblioteca está incompleta en plataformas que no son POSIX, específicamente el soporte de Windows es rudimentario.

Debido a la naturaleza experimental de la biblioteca del sistema de archivos, las garantías habituales sobre la estabilidad ABI y la compatibilidad con versiones anteriores no se aplican a ella. No hay garantía de que los componentes de cualquier encabezado sigan siendo compatibles entre las diferentes versiones de GCC.

Ver también la Tabla 3.1. Opciones de comando de C ++ .

Estoy tratando de usar el filesystem . Tengo -std=c++11 -std=c++1y en mi CMakeLists.txt . La versión de GCC es 4.9.2 . Sin embargo, tengo un error:

/home/loom/MyProject/src/main.cpp:5:35: fatal error: experimental/filesystem: No such file or directory #include <experimental/filesystem> ^ compilation terminated.

¿Cuál es la forma correcta de usar std::experimental::filesystem ?