Есть ли способ включить прямые заголовки для std :: filesystem? - PullRequest
4 голосов
/ 21 июня 2019

Точно так же, как iostreams имеет заголовок forward-include #include<iosfwd> заголовок только с объявлениями, я предположил, что файловые системы тоже будут иметь его. Однако я не мог найти один.

У меня есть класс, который объявляет одну функцию-член с filesystem::path const& в качестве аргумента, и это кажется излишним, чтобы принести все #include<experimental/filesystem> просто для получения path.

#include<experimental/filsystem_fwd> // or #include<experimental/filesystem/path/*only*/>
...
struct A{
  ...
  void save(std::experimental::filesystem::path const& p);
}

1 Ответ

1 голос
/ 22 июня 2019

Есть ли такой заголовок?Нет.

Не могли бы вы сделать такой заголовок?Также нет. [namespace.std] / 1 говорит нам:

Поведение программы на C ++ не определено, если она добавляет объявления или определения в пространство имен std или в пространство имен в пространстве именstd, если не указано иное.

Поскольку любые предварительные объявления вещей std должны быть частью пространства имен std, вы не можете этого сделать.Вам разрешено писать шаблоны специализаций, и в некоторых случаях вам разрешено совать себя в std.Но объявить std::filesystem::* - это не то, что вы можете сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...