我觉得我有一个严重的“Doh!” 此刻……
我目前正在尝试实施:
std::ostream& operator<<(std::ostream &out, const MyType &type)
MyType 拥有 int、char 和 bool 的 boost::variant。IE:使我的变体可流式传输。
我试过这样做:
out << boost::apply_visitor(MyTypePrintVisitor(), type);
return out;
MyTypePrintVisitor 有一个模板函数,它使用 boost::lexical_cast 将 int、char 或 bool 转换为字符串。
但是,这不会编译,错误是 apply_visitor 不是 MyType 的函数。
然后我这样做了:
if(type.variant.type() == int)
out << boost::get<int> (type.variant);
// So on for char and bool
...
我缺少更优雅的解决方案吗?谢谢。
编辑:问题解决了。请参阅第一个解决方案和我对此的评论。