草庐IT

ZN5boost

全部标签

c++:程序设置 - boost.PropertyTree 或 boost.program_options?

我一直在寻找在C++中存储程序设置或选项或配置的解决方案。这些可能是在GUI中公开的设置,需要在我的代码运行之间保存。在我的搜索中,我遇到了boost.PropertyTree这似乎是一个不错的选择。我知道boost是受人尊敬的代码,所以我很喜欢使用它,所以我开始使用它进行开发。然后我遇到了boost.program_options这似乎允许您做同样的事情,但看起来更适合程序设置的特定用例。现在我想知道哪个最适合这份工作?(或者有没有比两者都好的第三种选择)编辑:仅供引用,这是一个插件,因此它不会使用命令行选项(因为它甚至不可能)。更新我最终坚持使用boost.PropertyTree

c++ - Boost.Spirit.Qi : How to return attributes with Nabialek trick

按照几个教程(例如http://boost-spirit.com/home/articles/qi-example/nabialek-trick/),我想使用Nabialek技巧来拥有一个动态解析器​​。解析已经可以正常工作,但我没有得到传输的属性。解释如https://stackoverflow.com/a/9109972/2524462建议,属性应该是可能的,但不是参数。这只是一个将字符串和数字解析为结构的小示例。这只是为了展示我的问题;这种方法应该在以后真正需要动态解析器​​的更大系统中使用。问题:如何使用Nabialek技巧传输属性?我不是精神专家,所以请多多包涵。我正在使用g

c++ - BOOST_MPL_ASSERT 和 BOOST_STATIC_ASSERT 哪个更好?

我记得BOOST_MPL_ASSERT曾经是首选。这仍然是真的吗?有人知道为什么吗? 最佳答案 [回答我自己的问题]这取决于。这是一个苹果与橘子的比较。尽管相似,但这些宏不可互换。以下是每个工作原理的摘要:BOOST_STATIC_ASSERT(P)如果P!=true则生成编译错误.BOOST_MPL_ASSERT((P))如果P::type::value!=true则生成编译错误.尽管需要双括号,后一种形式特别有用,因为它可以生成更多信息性错误消息如果使用bool空元元函数来自Boost.MPL或TR1的作为谓词。这是一个示例程序

c++ - 同时使用 2 个版本的 boost

我使用的是RHEL5.3,它随gcc4.1.2和boost1.33一起提供。我想要的一些功能在boost1.33中是缺失的。因此,想法是升级到新的boost版本1.43。是否可以同时使用boost1.43中的一些仅header库和1.33中的其余库?例如我想使用unorded_map,这是boost1.33中缺少的。是否可以同时使用不同版本的二进制boost库? 最佳答案 不——永远不要这样做!这是不可能的,你可能会意外崩溃。正确完成它的唯一方法是使用命名空间重命名:即创建替代boost版本放置在不同的命名空间中。最新版本的BCP提

c++ - 使用 'undefined reference to ` boost::system::get_system_category()' 链接 boost barfs

我在静态链接使用boost1.35库的应用时遇到问题。我正在使用带有G++4.3.2的linuxdebianLenny盒子。没有-static的链接可以顺利进行。具体来说,g++-Wall-Wextra-pedantic-ggdb3-O0-static-lboost_thread-mt-lboost_system-mt-lboost_program_options-mt-lssl-lpthread-lcryptomain.ocomandos.outils.otunnel.oopciones.odecode.osysutils.o-osappmain.o:Infunction`__sta

c++ - boost python链接

我正在为我的游戏添加boost.python。我为我的类编写包装器以在脚本中使用它们。问题是将该库链接到我的应用程序。我正在使用cmake构建系统。现在我有一个包含1个文件和makefile的简单应用程序:PYTHON=/usr/include/python2.7BOOST_INC=/usr/includeBOOST_LIB=/usr/libTARGET=main$(TARGET).so:$(TARGET).og++-shared-Wl,--export-dynamic\$(TARGET).o-L$(BOOST_LIB)-lboost_python\-L/usr/lib/python2

c++ - 编译 boost.asio 示例时出现链接器错误

我正在尝试学习一点C++和Boost.Asio。我正在尝试编译以下代码示例:#include#include#includeusingboost::asio::ip::tcp;intmain(intargc,char*argv[]){try{if(argc!=2){std::cerr"buf;boost::system::error_codeerror;size_tlen=socket.read_some(boost::asio::buffer(buf),error);if(error==boost::asio::error::eof)break;//Connectionclosedc

C++:你在使用 Loki 还是 Boost 作为仿函数?

我一直在阅读Alexandrescu的书《现代C++设计》,他使用的技术给我留下了深刻的印象,所以我想添加Lokilibrary到我的应用程序。但是,经过进一步调查,我发现我已经在使用的boost提供了许多类似的功能(但并非全部,例如,我在boost中找不到单例)由于基于策略的设计和仿函数,我最感兴趣的是使用loki。对我来说,boost和loki各有利弊。我对loki的主要担忧是糟糕的文档(图书馆不再与书绑定(bind)),但在我看来,loki在某些领域比boost更强大和灵活(我可能在那个方面错了)在选择将boost或loki用于仿函数和策略之前,我想知道在现实生活中使用它们的人的

c++ - boost序列化中如何区分读/写操作?

使用boost序列化库,我有一个非常简单的serialize()成员函数,类似于:templatevoidserialize(Archive&ar,unsignedversion){ar&m_Searcher;}...我想让它保持简单(我不想特别使用拆分)。但在写作的情况下,我想在实际写作之前为m_Searcher做一些“准备”。{if(this-is-a-writing-operation)do-some-preparation(m_Searcher)ar&m_Searcher;}有没有简单的方法来区分读写操作? 最佳答案 我认为

c++ - Boost 中的多读单写锁

我正在尝试在多线程场景中实现以下代码:GetsharedaccesstomutexReaddatastructureIfnecessary:GetexclusiveaccesstomutexUpdatedatastructureReleaseexclusivelockReleasesharedlockBoost线程有一个shared_mutex类,它是为多读取器、单写入器模型设计的。关于这个类有几个stackoverflow问题。但是,我不确定它是否适合上述任何读者可能成为作家的场景。文档指出:TheUpgradeLockableconceptisarefinementoftheSha