Почему я не могу использовать ‹experimental/filesystem› с g++ 4.9.2?

Я пытаюсь использовать файловую систему. У меня -std=c++11 -std=c++1y в моем CMakeLists.txt. Версия GCC 4.9.2. Однако у меня есть ошибка:

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

Как правильно использовать std::experimental::filesystem?


person Loom    schedule 07.05.2015    source источник
comment
Похоже, в настоящее время он работает только с с головой   -  person Shafik Yaghmour    schedule 07.05.2015


Ответы (1)


Если мы посмотрим на статус libstdc++, мы увидим, что они поддерживают файловая система ТС:

Бумага | Название | Статус

........

N4100 | Файловая система | Д

но он говорит:

На этой странице описывается поддержка C++14 и библиотеки TS в основной версии GCC SVN, а не в каком-либо конкретном выпуске.

и при попытке сделать это на Wandbox похоже, что эта библиотека доступна только в последней ветке разработки 6.0 и Я не могу найти более подробную информацию, кроме этого.

Обновить

Обновление от Джонатана Уэйкли:

Теперь он также доступен в ветке gcc-5 в Subversion и будет включен в выпуск GCC 5.3 в конце этого года.

Также, согласно ответу Джонатана Уэйкли, нам нужно скомпилировать с использованием -lstdc++fs. Это описано в разделе ссылки gcc. документы:

GCC 5.3 включает реализацию библиотеки файловой системы, определенную технической спецификацией ISO/IEC TS 18822:2015. Так как это экспериментальное расширение библиотеки, не являющееся частью стандарта C++, оно реализовано в отдельной библиотеке, libstdc++fs.a, и для него нет разделяемой библиотеки. Чтобы использовать библиотеку, вы должны включить и связать с -lstdc++fs. Реализация библиотеки неполная на платформах, отличных от POSIX, в частности, поддержка Windows находится в зачаточном состоянии.

Из-за экспериментального характера библиотеки Filesystem обычные гарантии стабильности ABI и обратной совместимости на нее не распространяются. Нет никакой гарантии, что компоненты в любом заголовке останутся совместимыми между различными выпусками GCC.

См. также таблицу 3.1. Параметры команды C++.

person Shafik Yaghmour    schedule 07.05.2015
comment
Теперь он также доступен в gcc-5-branch в Subversion и будет включен в выпуск GCC 5.3 позже в этом году. - person Jonathan Wakely; 01.09.2015
comment
@JonathanWakely этот вопрос является хорошим связанным вопросом. - person Shafik Yaghmour; 15.10.2015