草庐IT

Boost-asio

全部标签

c++ - boost::variant 递归问题

有什么办法可以做到这一点吗?我希望你能明白我的想法,我正在尝试通过递归对创建一个列表#include#includestructnil{};typedefboost::make_recursive_variant>::typelist_t;intmain(){list_tlist={1,(list_t){2,(list_t){3,nil()}}};return0;} 最佳答案 没有。boost::variant的要点在于它具有固定大小,并且不进行动态分配。在这方面,它类似于union。递归boost::variant必须具有无限大小

c++ - 来自 boost 程序选项的 bool 选项

我正在使用boost程序选项从命令行参数中获取bool值。我希望我的论点被指定为“Y”、"is"、“N”、“否”。实际上我的代码是使用一个临时字符串完成的将被boost程序选项解析根据“Y”、“Yes”、“N”或“No”进行检查分配给bool变量成员。除此之外,我还使用了另一个获取默认值的临时字符串。我做了所有这些工作,因为我尝试了下面不起作用的代码namespacepod=boost::program_options;("Section.Flag",pod::value(&myFlag_bool)->default_value(false),"description")你知道提升程序

c++ - 返回对 boost::any 持有的数据的引用

我有一个任何指针的映射,称为gmap,定义如下:std::map&gmap=getSingleton().globalValues;这张map确实是对globalValues的引用,我已经在gdb中查看了地址。我还控制了any指针(这就是为什么它们是指针,我宁愿做引用,但我现在正在调试)。现在,我用我声明gmap的相同方法返回它:returnboost::any_cast(*gmap[key]);在&boost::any_cast[T&][*gmap[key]]处观察内存,一旦我弹出堆栈帧,数据就会变坏。这很奇怪,因为根据:Boost'sdocumentationofany_cast返

c++ - boost type_traits is_array

我一直在尝试浏览Boosttype-traitsheader,考虑到无数#define提供的强烈不可读性,现在我感到非常恶心。然后是更多#define。具体来说,我有兴趣弄清楚以下3个特征:类型T是数组、类还是枚举。任何人都可以帮助建议一些破译明显疯狂背后的方法的方法吗?比如你如何从一个类型中找出特征背后的理论,任何相关的阅读Material等。 最佳答案 is_array非常简单直接:templatestructis_array{staticconstboolvalue=false;};templatestructis_array

c++ - 为什么 boost::optional 对于继承虚函数的类会失败

boost::optional非常适合简单的数据类型,但一旦用于从实现接口(interface)的类继承的类,它就会在启用严格别名时失败。例子:#includestructMyLine{doublea;doubleb;};classEdge{public:MyLinetoMyLine()const;private:virtualMyLinedoToMyLine()const=0;};classWall:publicEdge{public:Wall(MyLineconst&seg):mMyLine(seg){};private:MyLinedoToMyLine()const{return

c++ - 为什么 boost::spirit::qi::parse() 没有设置这个 boost::variant 的值?

当尝试将文本解析为boost::variant时,变体的值不会改变。解析器本身似乎工作正常,所以我的假设是我对变体代码做错了什么。我正在使用boost1.46.1和以下代码在VisualStudio2008中编译。第一次更新hkaiser注意到规则和语法模板参数不能是Variant但是Variant().这有点“进一步”,因为我现在在boost_1_46_1\boost\variant\variant.hpp(1304)中有编译错误.评论说://NOTETOUSER://Compileerrorhereindicatesthatthegiventypeisnot//unambiguou

c++ - Boost.flyweight 和 Boost.MPL

我有一个关于享元选项的问题,给出下面的定义,基于http://www.boost.org/doc/libs/1_40_0/libs/flyweight/test/test_basic.cpptypedefboost::flyweights::flyweight,boost::flyweights::static_holder_class,boost::flyweights::hashed_factory_class,std::equal_to,std::allocator>,boost::flyweights::simple_locking,boost::flyweights::ref

c++ - 在 Solaris 上构建 Boost

Boost会完全构建在Solaris上吗?在我支付支持契约(Contract)以将SunStudio12.2修补到最新版本之前,我想知道是否有人在此方面取得了成功(特别是Proto/Spirit)。我遇到了一些错误,有些错误看起来已经在补丁中解决了,但是向Oracle支付支持费用并不便宜,所以我宁愿希望它能在我做之前工作。现在,我只是尝试在Solaris上使用cpp-netlib并使用BoostPropertyTree解码通过HTTP获取的一些JSON。它在MacOSX上运行良好-所以我希望我可以在Solaris上使用相同的代码。 最佳答案

c++ - boost::interprocess 线程安全吗?

目前,我有2个进程使用message_queue和shared_memory表单boost进行通信。一切如常。现在我需要使这个进程中的一个成为多线程的(再次感谢boost),我想知道我是否需要在线程之间使用保护机制(例如互斥锁),或者boost::interprocess库是否已经存在提供保护机制?我没有在boost文档中找到任何相关信息。顺便说一下,我使用的是boost1.40。提前致谢。 最佳答案 来自boost::interprocess的共享资源(共享内存等)要求您提供必要的同步。这样做的原因是您可能不需要同步,而且它通常在

c++ - Boost Single Pass Iterator 和 Forward Traversal Iterator 有什么区别?

在NewIteratorConceptsstandardproposal,我无法破译单遍迭代器和前向遍历迭代器之间的任何有用区别。前向遍历表中“++r”行的“断言/注释”是否暗示前向遍历迭代器是可复制的,而单遍迭代器不是?此外,为什么默认构造的额外能力会产生迭代器模型正向遍历?原理是什么? 最佳答案 单遍迭代器的想法是它比正向遍历迭代器具有更少的要求。这样就可以为某些无法进行多次传递的情况创建一个。想想控制台输入。即使您可以复制迭代器,也无法帮助您检索旧的键盘输入。 关于c++-Boos