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
?