当我们使用 cout 时,boost::any 和 boost::variant 之间的区别<<
Difference between boost::any and boost::variant when we use cout<<
我已经使用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<<' ';
}
}
}
Boost.Any提供全类型擦除,底层类型的所有特性(如流式传输到std::ostream
)都会被擦除。返回类型的唯一方法是使用any_cast
函数。
如果您想要部分类型擦除,请查看Steven Watanabe的Boost.TypeErasure库。请注意,TypeErasure是自Boost 1.54以来的官方Boost库。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- Boost Spirit,获取迭代器内部语义动作
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- <<操作员在下面的行中工作
- BOOST ::变体无法解决运算符&lt;&lt;对于STD :: Ostream