草庐IT

ZN5boost

全部标签

c++ - 为什么 boost::call_traits<T>::param_type 是枚举类型的引用?

基本的C++03枚举类型只是一个具有奇特名称的整数值,因此我希望按值传递它....出于这个原因,我还期望boost::call_traits::param_type与T=SomeEnum确定最有效的传球方式T是按值(value)。从boost文档中查看CallTraits:Definesatypethatrepresentsthe"best"waytopassaparameteroftypeTtoafunction.当我使用boost::call_traits::param_type时与T=SomeEnum它确定SomeEnum应该通过引用传递。我也期待C++11classenums也

c++ - 如何迭代 boost::fusion 关联结构并以通用方式访问键

这是我在这个伟大的知识交流中的第一个问题,我希望能找到一些帮助。我尝试实现一种创建PrintTo函数的通用方法(稍后将在GoogleTest中使用)。所以下面的代码只完成了一半的工作。它只打印定义的结构Foo::Bar的值#include#include#include#include#include#include#includenamespaceFoo{namespaceKeys{structStringField;structIntField;};}BOOST_FUSION_DEFINE_ASSOC_STRUCT((Foo),Bar,(std::string,stringFiel

c++ - 自定义类型与 boost::format 的 % 运算符一起使用的要求是什么?

我想知道必须在类中实现哪些函数和/或运算符才能使用boost::format%运算符。例如:classA{intn;//我一直在学习Pretty-printC++STLcontainers,这在某些方面与我的问题有关,但这让我花了几天时间进行相关审查和学习,涉及涉及auto和各种其他语言功能的问题。我还没有完成所有这些调查。有人可以回答这个具体问题吗? 最佳答案 你只需要定义一个合适的输出操作符(operator):#include#includestructA{intn;A():n(){}friendstd::ostream&op

c++ - 如何分配/复制一个 Boost::multi_array

我想分配一个boost::multi_array的拷贝。我怎样才能做到这一点。我要将其分配给的对象已使用默认构造函数进行了初始化。这段代码不起作用,因为维度和大小不一样classField{boost::multi_arraym_f;voidset_f(boost::multi_array&f){m_f=f;}}用什么代替m_f=f? 最佳答案 您应该在分配之前调整m_f的大小。它可能类似于以下示例:voidset_f(boost::multi_array&f){std::vectorex;constsize_t*shape=f.s

c++ - boost local_date_time 数学错了吗?

我正在使用Boost'sdatetimelibrary在我的项目中。当我发现它具有小时、天、月、年等持续时间类型时,我感到非常高兴,并且它们会根据您将它们添加到的内容更改它们的值(即添加1个月提前日期的月份部分,它不只是增加30天或类似的时间)。我认为此属性适用于天数类型,但我决定在将其投入生产之前对其进行测试...local_date_timet1(date(2010,3,14),hours(1),easternTime,false);//1amonDSTtransitiondate{CPPUNIT_ASSERT_EQUAL(greg_year(2010),t1.local_time

c++ - 使用 boost::iterator_facade 的优点和缺点是什么?

是的——标题几乎概括了它。我有很多实现迭代器概念的类型,我想知道是否值得引入这个boostheader而不是手动实现。到目前为止:优势明确说明不太可能有错误 最佳答案 如果维护您自己的迭代器类型成为一种负担,那么请改用boost。它们经过详细说明和测试,不太可能出现错误。 关于c++-使用boost::iterator_facade的优点和缺点是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

c++ - 如何将 boost options_description 与十六进制输入一起使用?

我想有两个选项供程序运行,起始地址和结束地址,以便程序选项如下:--start_address0xc0000000--end_address0xffffffffoptions_description是否可以接受这样的十六进制输入?我是否必须将输入视为字符串并将它们转换为十六进制值。我现在有这个:po::options_descriptiondesc("Allowedoptions");desc.add_options()("help,h","displaythishelpmessage")("path,p",po::value(),"Executablefilepath")("star

c++ - boost python 的通用异常转换

当前用于将特定C++异常转换为python的boost::python示例如下所示:voidtranslate(constMyException&e){PyErr_SetString(PyExc_RuntimeError,e.what());}boost::python::register_exception_translator(translate);不幸的是,这需要我们为每个异常编写一个特定的函数。我们试图通过编写通用异常翻译器来简化这一点:#include//GeneralizedexceptiontranslatorforBoostPythontemplatestructGen

c++ - 如何创建具有 64 位输出的良好 hash_combine(受 boost::hash_combine 启发)

目前Boost有hash_combine函数输出32位无符号整数(准确的说是size_t)。一些引用:http://www.boost.org/doc/libs/1_43_0/doc/html/hash/reference.html#boost.hash_combinehttp://www.boost.org/doc/libs/1_43_0/doc/html/hash/combine.htmlMagicnumberinboost::hash_combine我想探索如何创建64位版本的hash_combine。第一件事是在64位中获得黄金比例或任何其他无理数。第二部分是使用轮类。这部分相

c++ - Boost 解析日期/时间字符串并产生 .NET 兼容的 Ticks 值

我想使用C++/Boost来解析时间字符串,例如1980.12.0621:12:04.232并获取一个ticks值,该值对应于滴答计数(用于初始化.NET的System.DateTime)。我该怎么做?更新:我确实需要使用C++;我不能为此使用C++/CLI。 最佳答案 在.Net中日期时间从01.01.0100:00:00开始在boostptime从1400.01.0100.00.00开始//C++代码#includeintmain(intargc,char*argv[]){usingnamespaceboost::posix_t