与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);
}
答案 0 :(得分:1)
有这样的标题吗?不。
您能制作这样的标题吗?还有,没有[namespace.std]/1 tells us:
如果C ++程序的声明或定义添加到命名空间
std
或命名空间std
内的命名空间中,则行为不确定。
由于std
命名空间的任何前向声明都必须是std
命名空间的一部分,因此您不能这样做。您可以编写模板专业化知识,并且在某些情况下,您可以戳std
本身。但是声明std::filesystem::*
并不是您可以做的。