草庐IT

boost-container

全部标签

c++ - BOOST_PP_SEQ_FOLD_LEFT 是如何工作的?

我需要编写一个宏来处理任意长的列表,例如(A)(B)(C)。如果我可以采用Boost依赖项,我将只使用BOOST_PP_SEQ_之一宏系列。不幸的是,我不能,所以我只能尝试弄清楚它是如何工作的。这东西并不明显。这里有人能写一个简单的、独立的实现吗,比方说,BOOST_PP_SEQ_FOLD_LEFT给我看看?特别是,我想转换:template_(classA,classB,classC)(requiresIsFoo&&IsBar)(requiresIsBaz)voidfrobozzle(A,B,C);重写为:template&&IsBar),int>=0,std::enable_if_

c++ - boost::variant 的访客模板

我想使用boost.variant作为模板“访问者”类的参数,该类将根据boost.variant访问者机制的要求提供访问者操作符,在这种情况下,所有返回无效,即voidoperator()(T0value);voidoperator()(T1value);voidoperator()(T2value);该模板还将为每个类型T0...在变体中有一个相应的虚函数,默认情况下不执行任何操作。用户可以从模板类继承并只重新定义他感兴趣的虚函数。这类似于众所周知的“模板方法”模式。我能够想出的唯一解决方案是将boost::variant和关联的访问者包装在一个模板中,并通过typedef访问它们

c++ - boost::split 在字符串的开头和结尾留下空标记——这是期望的行为吗?

因为我在documentation中找不到任何关于此的信息,我以为我在这里问。我有以下程序(C++11):#include#includeusingnamespacestd;usingnamespaceboost;intmain(){stringtmp="#tag#tag1#tag2#tag3####tag4";list>matches;split(matches,tmp,is_any_of("\t#"),token_compress_on);for(automatch:matches){cout输出是:'''tag''tag1''tag2''tag3''tag4'''我原以为toke

c++ - boost使用c++11有多好?

Boost本质上是一个c++03库(刺激了c++11标准)。我正在考虑使用一些boost库(那些未在c++11中实现的库)。如果我使用的是c++11,是否会进行boost编译(不可复制但可移动的对象可能存在问题)?以及boost如何很好地利用c++11特性(可变参数模板是[一些boost库]使用的明显的东西,而不是大部分boostMPL)?(我在boost常见问题解答中找不到这个)。 最佳答案 Boost正朝着使用C++11特性的方向发展。但要记住的一件事是,boost不是“一个库”,而是一个库的集合。其中一些(例如boost::a

c++:Boost 1.48 类型特征和 Cocoa 包含怪异

我刚刚将我在OSXLion上开发的项目更新到版本1.48.0,该项目还包括Cocoaheader。这样做之后,我得到了一大堆错误,它们都指向has_prefix_operator.hpp和has_binary_operator.hpp,它们都指向如下行:BOOST_STATIC_CONSTANT(bool,value=(sizeof(check(((make()BOOST_TT_TRAIT_OPmake()),make())))==sizeof(::boost::type_traits::yes_type)));../../boost_1_48_0/boost/type_traits/

c++ - boost 单元测试主要功能?

在使用boost进行测试时,如何定义自己的main()函数?Boost使用它自己的main函数,但我使用的是自定义内存管理器,它需要在分配任何内存之前进行初始化,否则我会出错。 最佳答案 我不相信你真的需要你自己的主。我认为globalfixture你会过得更好:structAllocatorSetup{AllocatorSetup(){/*setupyourallocatorhere*/}~AllocatorSetup(){/*shutdownyourallocator/checkmemoryleakshere*/}};BOOST

c++ - boost 私有(private)成员的互斥奇怪错误

我有一个奇怪的错误。classINST{public:boost::mutexm_mutex;};std::vectorm_inst;错误C2248:“boost::mutex::mutex”:无法访问在类“boost::mutex”中声明的私有(private)成员参见“boost::mutex::mutex”的声明但是,我的其他类没问题,classVIEW{public:boost::mutexm_mutex;};VIEWm_view;我是不是漏掉了什么?我已经尝试将m_mutex声明为私有(private),但仍然有同样的问题。谢谢。 最佳答案

c++ - boost "no such file or directory"

我正在尝试在一台新计算机上设置我的Code::Blocks工作环境,但我遇到了一些问题。我第一次这样做已经有很长时间了,现在当我打开我的主要项目时,Boost给我带来了问题。我对C++还是很陌生,解决这类问题我的经验有限。当我打开我的项目并尝试编译它时,我得到了这个错误:fatalerror:boost/algorithm/string.hpp:Nosuchfileordirectory|在我的一个头文件的这一部分:#include我将Boostv1.51.0库放在C:\boost,因为这是我在其他计算机上的位置。我的项目设置为在该目录中搜索其他包含项,但它似乎没有找到文件?我的项目之

c++ - 当我安装了多个 Visual Studio 版本时,如何使用 Visual Studio 2008 构建 boost?

我知道如何在我的机器上使用最新的visualstudio构建boost(thisquestion,forexample)但是,我需要为VisualStudio2008(vc9)构建库我尝试使用toolset=vc9但我遇到了问题/没有成功。我如何为vc9构建库?在我运行boostrap之后,我尝试运行b2toolset=vc9但是输出是:C:/Development/boost50/boost_1_50_0/boost_1_50_0/tools/build/v2/build\toolset.jam:39:intoolset.usingrulevc9.initunknowninmodul

c++ - 为什么 boost::asio::io_service 不能用 std::bind 编译?

我正在尝试使用std::thread、std::bind和boost::asio编译简单的测试程序g++4.9.1(-std=c++11).但是,在创建新线程时,当我使用std::bind时,它不会编译。另一方面,当我切换到boost::bind时,一切都很好。代码如下:#include#include#include#include#include#includeintmain(intargc,char*argv[]){boost::asio::io_serviceioService;std::unique_ptrt;t.reset(newstd::thread(std::bind(