有没有一种方法可以包括std :: filesystem的转发头?

时间:2019-06-21 09:12:29

标签: c++ filesystems c++14 header-files

与iostreams具有前向包含头文件#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 个答案:

答案 0 :(得分:1)

有这样的标题吗?不。

您能制作这样的标题吗?还有,没有[namespace.std]/1 tells us:

  

如果C ++程序的声明或定义添加到命名空间std或命名空间std内的命名空间中,则行为不确定。

由于std命名空间的任何前向声明都必须是std命名空间的一部分,因此您不能这样做。您可以编写模板专业化知识,并且在某些情况下,您可以戳std本身。但是声明std::filesystem::*并不是您可以做的。