草庐IT

ZN5boost

全部标签

c++ - Boost multi_array 范围编译

范围可用于对Boost多维数组(multi_array)进行切片。根据documentation有多种定义范围的方法,但并非所有方法都能编译。我在Ubuntu11.04上使用GCC4.5.2。#includeintmain(){typedefboost::multi_array_types::index_rangerange;rangea_range;//indicesiwhere3编译器输出为:ma.cpp:Infunction‘intmain()’:ma.cpp:9:26:error:nomatchfor‘operator()’ma.cpp:10:25:error:nomatchf

C++, Linux : error: conversion from ‘boost::unique_future<void>’ to non-scalar type ‘boost::shared_future<void>’ requested. 如何绕过它?

我尝试使用boostthreadfutures.所以如图here我们可以得到sharedfuture来自packagedtask.所以我在linux上尝试这样的功能:templatevoidpool_item(boost::shared_ptr>pt){boost::shared_futurefi=pt->get_future();//error//...但调用它时出错:../../src/cf-util/thread_pool.h:Inmemberfunction‘voidthread_pool::pool_item(boost::shared_ptr>)[withtask_retu

c++ - boost::variant 单一存储保证

我的目标是保证所有变体类型的单一存储:根据'neverempty'guaranteefromBoost::variant,我们需要覆盖boost::has_nothrow_copy每个有界类型。但过了一会儿该文档提到了一些关于'boost::blank'的内容,如果类型已绑定(bind),变体将设置该值而不是尝试不抛出默认复制构造函数。不清楚的是如果在有界类型列表中添加boost::blank将避免覆盖/专门化has_nothrow_copy的要求与其他类型? 最佳答案 我相信这已经很明确了。以下是boost文档中的相关部分:Acc

c++ - 用 std/tr1/boost::array 替换内置数组总是安全的吗?

boost::array(或tr1或std版本)在内置数组的基础上提供了一些不错的附加功能。到目前为止,我们的代码库只包含内置数组,例如(编造的,但样式匹配):WORDm_lastReadFlags[FLAGS_MAX];...WORDflagBuffer[FLAGS_MAX];if(getFlags(flagBuffer)){memcpy(m_lastReadFlags,flagBuffer,sizeof(m_lastReadFlags));...我想大家会明白的。现在,我的问题是,对于代码中那些放置boost::array有意义的地方(因为进行了其他更改),是array为内置数组保

c++ - Boost find_first 它是如何工作的?/定义一个范围

我有一个缓冲区(例如charbuffer[1024]),其中填充了一些数据。现在我想在这个缓冲区中搜索一个子字符串。因为它应该是一个不区分大小写的搜索,所以我正在使用boost::algorithm::ifind_first。所以我这样调用这个函数:boost::iterator_rangebuf_iterator;buf_iterator=boost::algorithm::ifind_first(buffer,"substring");这实际上工作正常。但我担心的是:我只向函数传递了一个charpointer,所以ifind_first应该不知道我的缓冲区在哪里结束,但它仍然有效。

c++ - boost::transform_iterator 不适用于 std::bind( &Pair::first, _1 )?

通过std::map的键集进行迭代的传统任务将我引向了另一个似乎尚未在此处讨论的困惑局面。简而言之,这段代码无法编译(大量使用C++11):typedefstd::pairPair;vectorv{Pair(1,2),Pair(2,3)};usingnamespacestd::placeholders;autochoose_first=std::bind(&Pair::first,_1);boost::make_transform_iterator(v.begin(),choose_first);错误信息如下。notypenamed'result_type'in'structstd::

c++ - C++ 中的 Bool<true> 是什么——它来自 boost 吗?

我正在尝试使用一些示例代码,但我的编译器不会编译这一行:staticvoidexitActions(Host&h,Bool){}编译器是MSVS2005。我不认识Bool-所以不确定如何替换它。这个默认参数是否等效:staticvoidexitActions(Host&h,boolb=true){}样本来自http://accu.org/index.php/journals/252.代码只是文本中的片段-没有关于#include'是什么的片段-很难解决。Bool模板没有定义。 最佳答案 我猜Bool定义如下templatestruc

c++ - 针对 C++11 的 boost::any typeid 优化

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whencantypeidreturndifferenttype_infoinstancesforsametype?如果我将下面的operand->type()==typeid(ValueType)行更改为&operand->type()==&typeid(ValueType),则代码仍然适用于gcc,并且在可执行文件中占用的空间更少(并且多年来一直如此),但是C++11标准是否提供任何保证,这种优化应该适用于不同的编译器?templateValueType*any_cast(any*operand){ret

c++ - 使用 Boost Asio 接受 IPv6 链接范围地址

我有一个使用BoostASIO的TCP服务器。我注意到,在Linux上使用链接作用域的IPv6地址时,我无法在不引发异常的情况下创建boost::asio::ip::tcp::acceptor。使用全局IPv6地址或IPv4地址都可以正常工作。我很确定问题出在范围ID设置不正确,但我不知道如何解决这个问题。我正在使用ubuntu提供的boost1.40.0库在Ubuntu11.04LTS上进行开发。这是我的服务器代码的一个非常简单的版本,它显示了问题:#include#include#include#include#include/*ToCompile:g++-Wall-o./asio

c++ - 使用 boost singleton_pool 的自定义分配比默认慢

我为MyOrder类编写了自定义运算符new和运算符delete。我正在使用boost::singleton池分配内存。这是测试性能的程序,#include#include#include#include#includeclassMyOrder{std::vectorv1_;std::vectorv2_;std::strings1_;std::strings2_;public:MyOrder(std::strings1,std::strings2):s1_(s1),s2_(s2){}~MyOrder(){}staticvoid*operatornew(size_tsize);stati