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
, 、aのハンドルだけです T
適切なホルダーで調べることができるので、この構造は機能するはずだと思います。
残念ながら、g ++がtypedefにヒットすると、filepath_dataが不完全であると不満を言うため、コンパイルしません。
ですから、問題は、柔軟性とより高度なテンプレートの引数を利用できますか? boost::flyweight<>
この構造を機能させるために、そしてもしそうなら、どのように?
解決
この例 boost.flyweightと再帰データ構造を使用して組み合わせる方法を示します boost.variant と boost::recursive_wrapper
. 。たぶん、あなたはあなたの問題に同様のアプローチを使用することができます。
所属していません StackOverflow