草庐IT

boost-implicit-cast

全部标签

c++ - 断言中的 dynamic_cast 导致错误

我正在使用过时的VisualStudio2008(让我为您省去“这是您的问题”的麻烦。)这似乎是VisualStudio的问题:http://rextester.com/XKFR77690这似乎是assert的问题宏:http://ideone.com/bhxMi0给定这些结构:structbase{virtual~base(){}};templatestructFoo:base{Tfoo;};我能做到:base*test=newFoo>;if(dynamic_cast>*>(test)!=NULL)cout但是当我使用与if中完全相同的代码时-assert中的声明:assert(dy

c++ - Boost ASIO 能否用于构建低延迟应用程序?

BoostASIO能否用于构建低延迟应用程序,例如HFT(高频交易)?因此Boost.ASIO使用平台特定的最优解复用机制:IOCP、epoll、kqueue、poll_set、/dev/poll也可以与TOE(TCP/IP卸载引擎)和OpenOnload(内核旁路BSD套接字)一起使用以太网适配器。但是可以使用Boost.ASIO+TOE+OpenOnload构建低延迟应用程序吗? 最佳答案 这是Asio作者的建议,已发布到公开的SG-14GoogleGroup(不幸的是有问题,他们已转移到另一个邮件列表系统):Idoworkon

c++ - 暂停 boost::thread 无限时间

我正在使用boost::thread库(V1.44)来支持我的C++项目中的线程。用户需要能够无限期地暂停在自己的线程中运行的测试循环的执行并且能够在他愿意的时候恢复它。在Windows下我是这样解决的boolContintueLoop(){if(testLoopPaused){//testLoopPausedcanbesetbytheuserviaGUIelementstry{boost::this_thread::interruptible_wait(2147483648);//that'sveryugly,//somebodyknowstherightwaytopauseitfo

c++ - 右值引用 : Why aren't rvalues implicitly moved?

在关于C++右值引用(http://www.artima.com/cppsource/rvalue.html)的Artima文章中有这样的话:这就是为什么在向下传递到基类时必须说move(x)而不是只说x的原因。这是移动语义的一个关键安全特性,旨在防止从某个命名变量意外移动两次。我想不出这样的双招可以执行的情况。你能举个例子吗?换句话说,如果T&&的所有成员都是右值引用而不仅仅是引用,会出现什么问题? 最佳答案 考虑这个场景:voidfoo(std::stringx){}voidbar(std::stringy){}voidtest

c++ - 带有 const 指针的 boost::dynamic_pointer_cast 不起作用?

假设我有两个类,A和B,其中B是A的子类。我还有以下功能:voidfoo(boost::shared_ptra){boost::shared_ptrb=boost::dynamic_pointer_cast(a);//Error!}用gcc编译会出现以下错误:C:\Boost\include/boost/smart_ptr/shared_ptr.hpp:Inconstructor'boost::shared_ptr>::shared_ptr(constboost::shared_ptr&,boost::detail::dynamic_cast_tag)[withY=constA,T=c

c++ - 如何实现BOOST_TYPEOF?

这里我想了解实现BOOST_TYPEOF的大致思路。我的意思是代码可能没问题,但我想代码不会像真正的Boost实现那样简单。因此,我想了解BOOST_TYPEOF实现的想法。它是否使用编译器函数(一些API)来理解编译时表达式的类型? 最佳答案 在核心,Boost::Typeof使用sizeof非求值上下文将表达式的类型转换为整数,然后再将其转换回类型。考虑:templatestructsizer{charvalue[N];};sizerencode(char);sizerencode(unsignedchar);sizerenco

c++ - 在几分钟内构建所有的 Boost

谁能解释为什么要遵循这些说明:http://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html#easy-build-and-install...构建所有Boost需要我像样的机器5个小时,而somefolks报告说只用了3分钟做了同样的事情?除了上面提到的方法之外,还有另一种构建Boost的方法确实非常快(与几个小时相比,无论如何)。我在Darwin(Mac)选项上使用Clang编译器。不确定它有多重要,但我有16GBRAM和最新的SSD。时钟频率为2.3Ghz。编辑:我很高兴地报告,根据评论和答

c++ - 为什么 lexical_cast 要求运算符>>位于匹配的 namespace 中?

这是一个测试用例:#include#includenamespaceN{enumclassalarm_code_t{BLAH};}std::istream&operator>>(std::istream&is,N::alarm_code_t&code){std::stringtmp;is>>tmp;if(tmp=="BLAH")code=N::alarm_code_t::BLAH;elseis.setstate(std::ios::failbit);returnis;}intmain(){autocode=boost::lexical_cast("BLAH");}Boost拒绝转换,声

c++ - unix 时间戳到 boost::posix_time::ptime

我需要将自纪元以来的秒数转换为ptime。我很确定一定有一种简单的方法可以做到这一点,但我找不到任何东西。谢谢。编辑:原来的时间戳是float。我无法更改它,也不想失去亚秒级精度。 最佳答案 使用from_time_t()转换功能。time_t是UNIX时间戳,即自纪元以来的秒数。 关于c++-unix时间戳到boost::posix_time::ptime,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 使用或不使用 boost::bind() 创建一个 boost::thread

有些人似乎使用boost::bind()函数启动boost::threads,例如在以下问题的公认答案中:Usingboostthreadandanon-staticclassfunction而其他人根本不使用它,例如在这个问题中获得最多赞成票的答案:BestwaytostartathreadasamemberofaC++class?那么,如果存在差异,那有什么区别呢? 最佳答案 从下面编译并给出预期输出的代码可以看出,boost::bind对于将boost::thread与自由函数、成员函数和静态成员函数一起使用是完全不必要的:#