C++ 有没有办法为std::filesystem包含转发头?
与iostreams的forward include头C++ 有没有办法为std::filesystem包含转发头?,c++,filesystems,c++14,header-files,C++,Filesystems,C++14,Header Files,与iostreams的forward include头#include头只包含声明一样,我假设文件系统也会有一个。但是我找不到 我有一个类,它声明了一个单成员函数,参数为filesystem::path const&,为了得到路径,而把整个#include都包含进去,这似乎有些过分 #include<experimental/filsystem_fwd> // or #include<experimental/filesystem/path/*only*/> ... st
#include
头只包含声明一样,我假设文件系统也会有一个。但是我找不到
我有一个类,它声明了一个单成员函数,参数为filesystem::path const&
,为了得到路径
,而把整个#include
都包含进去,这似乎有些过分
#include<experimental/filsystem_fwd> // or #include<experimental/filesystem/path/*only*/>
...
struct A{
...
void save(std::experimental::filesystem::path const& p);
}
#包括//或#包括
...
结构A{
...
void save(std::experimental::filesystem::path const&p);
}
有这样的标题吗?没有
你能做这样一个标题吗?还有,没有
如果C++程序在名称空间<代码> STD<代码>中添加声明或定义,或在命名空间<代码> STD < /C>中的命名空间,除非另有说明,否则未定义。
由于
std
名称空间的任何转发声明都必须是std
名称空间的一部分,所以您不能这样做。您可以编写模板专门化,在某些情况下,您可以查看std
本身。但是声明std::filesystem::*
不是你能做的事。Sad,但似乎不是。。。整个库都在大标题
(或
)中,我甚至没有想到要向前声明路径。现在您提到它,它甚至不起作用,因为path
是(可以是)实现细节的typedefstd::experimental::filesystem::v1::_cxx11::path
。因此,文件系统库在namespace std{namespace experimental{namespace filesystem{class path;}}}}
之后不会编译,并显示一条消息bits/fs_dir.h:94:36错误:对“path”的引用不明确…
。