0

我已经使用boost::variant<string, float>. 但是,当我尝试boost::any改用时,我在指令中遇到不匹配操作数错误,cout<<这段代码是:

for( vector<vector<vector<boost::any>>>::const_iterator i = masterList.begin(); i != masterList.end(); ++i)
{
    for( vector<vector<boost::any>>::const_iterator j = i->begin(); j != i->end(); ++j)
    {
        for( vector<boost::any>::const_iterator k = j->begin(); k != j->end(); ++k)
        { 
            cout<<*k<<' ';
        }
    }
}
4

1 回答 1

2

Boost.Anystd::ostream提供完整的类型擦除,底层类型的所有特征(例如流式传输到 a )都被擦除。获取类型的唯一方法是使用any_cast函数。

如果您想要部分类型擦除,请查看 Steven Watanabe 的Boost.TypeErasure库。请注意,TypeErasure 是自 Boost 1.54 以来的官方 Boost 库。

于 2013-06-23T10:46:59.487 回答