假设我有:
class TypeA { };
class TypeB { };
typedef boost::variant<TypeA, TypeB> Type;
还行吧:
void foo(Type t) { }; int main(){ TypeA a; foo(a); }
这不会编译:
void foo(Type &t) { }; int main(){ TypeA a; foo(a); }
出现错误:
从“TypeA”类型的表达式中对“Type&”类型的引用进行无效初始化</p>
这也不能编译:
void foo(Type *t) { }; int main(){ TypeA a; foo(&a); }
出现错误:
无法将参数 '1' 的 'TypeA*' 转换为 'Type*' 到 'void foo(Type*)'</p>
有没有办法通过引用(如案例 2)或指针(如案例 3)将由 boost::variant 聚合的类型之一的实例传递给接受 boost::variant 的函数?
非常感谢你!