使用boost :: flyweight 内部struct t {}(即,递归轻量级)
-
12-10-2019 - |
题
我试图利用boost :: flyWeight共享路径组件来定义不变的文件路径值类型。这样的事情:
struct filepath_data;
typedef boost::flyweight<filepath_data> filepath;
struct filepath_data {
boost::optional<filepath> parent;
std::string name;
};
当然,这看起来像是递归结构,但是 boost::flyweight<T>
实际上(本身)没有包含的副本 T
, ,只是一个把手 T
可以在适当的持有人中查找,因此我认为这种结构应该起作用。
不幸的是,它不会编译,因为当G ++击中Typedef时,它会抱怨Filepath_data不完整。
因此,问题是,我可以利用灵活性和更高级的模板参数 boost::flyweight<>
为了使这个结构起作用,如果是,如何?
解决方案
这个示例 显示如何使用boost.flyweight与递归数据结构相结合 boost.variant 和 boost::recursive_wrapper
. 。也许您可以使用类似的方法来解决问题。
不隶属于 StackOverflow