Boost::variant 具有引用相同变体的对象

Boost::variant with a object which references the same variant

我怎样才能拥有不同对象的变体 A, B, C,其中 C 引用了该变体?

class A {
   ...
};

class B {
   ...
};

class C {
   ...
   std::vector<PossibleValues> storage; // reference to variant
   ...
};

boost::variant<A, B, C> PossibleValues;

如果顺序正确,您可能会:

class A {
   //...
};

class B {
   //...
};

class C;
using PossibleValues = std::variant<A, B, C>;

class C {
   //...
   std::vector<PossibleValues> storage; // reference to variant
   //...
};

Demo