草庐IT

boost-implicit-cast

全部标签

c++ - boost 函数的Python方法

我有一个使用boostpython将boost::function作为参数导出到Python的方法。据我所读,boost::python应该支持boost::function而无需大惊小怪,但是当我尝试使用python方法调用该函数时,它给了我这个错误Boost.Python.ArgumentError:PythonargumenttypesinClass.createTimer(Class,int,method,bool)didnotmatchC++signature:createTimer(classClass{lvalue},unsignedlonginterval,classb

c++ - const_cast 和 UB

$5.2.11/7-"[Note:Dependingonthetypeoftheobject,awriteoperationthroughthepointer,lvalueorpointertodatamemberresultingfromaconst_castthatcastsawayaconst-qualifier68)mayproduceundefinedbehavior(7.1.5.1).]"这部分(C++03)的措辞让我感到惊讶。令人惊讶的是两件事。a)首先,“可能”的使用。为什么是“可以”?标准中的其他地方对未定义的行为非常明确b)为什么不是直接抛弃“未定义行为”的原始co

c++ - boost 正则表达式运行时错误

我正在尝试使用我在另一台计算机上编写的一些代码,将字符串拆分为标记。这段代码编译得很好。该代码也可以在其他一些计算机上按预期工作。我已设法将代码缩减为以下内容:#include#includetypedefstd::vectortoken_t;token_tgenerate_tokens(std::stringraw_input){//thisfunctionbreaksainputstringintotokens.Sotest100goesto2tokens"test"and"100".boost::regexre_splitter("\\s+");//thisusestherege

c++ - WaitForMultipleObjects 和 boost::asio 在多个 windows::basic_handle 上有什么区别?

我有一个HANDLE列表,由许多不同的IO设备控制。之间的(性能)差异是什么:在所有这些句柄上调用WaitForMultipleObjectsasync_readonboost::windows::basic_handle'saroundallthesehandlesWaitForMultipleObjects是O(n)时间复杂度吗?n个句柄?您可以以某种方式在windows::basic_handle上调用async_read对吗?或者这个假设是错误的?如果我在多个线程中调用同一个IO设备上的运行,处理调用是否会在这些线程之间平衡?这将是使用asio的主要好处。

c++ - 如何从 boost::posix_time::ptime 获取自纪元时间以来的毫秒数

我看过一些otheranswersonSO这表明我们可以通过从“其他”时间中减去纪元时间来获得以毫秒为单位的纪元时间,但是当我尝试时它不起作用:ptimeepoch=time_from_string("1970-01-0100:00:00.000");ptimeother=time_from_string("2011-08-0917:27:00.000");longdiff=(other-epoch).total_milliseconds();在这个阶段diff是-1349172576,它应该是一个正数,因为“其他”时间是2011年。有人知道是什么原因造成的吗?获取纪元以来的毫秒数的正

c++ - std::map of boost::mutex 具有奇怪的行为

我有这个代码://////DefaultNamespaces///usingnamespacestd;typedefmapt_map_shared_mutex;intmain(intargc,char**argv){t_map_shared_mutexlist_lock;boost::shared_mutexglobal_lock;stringi="ABC";boost::unique_lockl_lock(global_lock);boost::unique_locklock(list_lock[i]);//DoSomethingwiththatlocklock.unlock();l

c++ - boost::program_options 如何重新加载一个值

我想从配置文件中重新加载一些值。我知道po::store不会更改存在于variables_map中的值。有没有替代方案可以替换值,即使它们已经存在?我尝试删除即将从variables_map重新加载的值,但是po::store无论如何都不会添加新值(即使旧值不能都可以访问)。 最佳答案 P3trus的解决方案涉及向下转换。这是必要的,因为variables_map重载了std::map::operator[]返回一个constvariable_value&(const防止重新分配)。但是在C++11中我们有std::map::at(

c++ - boost::signals2 插槽作为非静态函数成员?

我最近出于学习目的一直在玩弄boost::signals2,我想知道我是否可以将信号连接到位于类(就像我在Qt中所做的那样)。请考虑以下事项:classWorker{typedefboost::signals2::signalSendMessage;public:typedefSendMessage::slot_typeSendMessageSlotType;boost::signals2::connectionconnect(constSendMessageSlotType&slot){returnsend_message.connect(slot);}private:SendMes

c++ - 是否可以使用 static_cast 避免 vtable 开销?

这是我的问题。我有一个基类和一个派生类,它覆盖了基类中的一些方法。为简单起见,请考虑以下示例:structbase{virtualvoidfn(){/*basedefinitionhere*/}};structderived:base{voidfn(){/*deriveddefinitionhere*/}};在我的实际程序中,这些类作为参数传递给其他类并在其他方法中调用,但为了简单起见,让我们创建一个简单的函数,将基类或派生类作为参数。我可以简单地写voidcall_fn(base&obj){obj.fn();}并且由于虚函数的缘故,对适当函数的调用将在运行时解析。但是,我担心如果ca

c++ - 如何将 "cast"一个双参数函数转换为一个参数函数?

在matlab中,可以这样写:S=@(x,y)x^2+y^2-1G=@(x)S(x,1);如果我有一个需要单参数函数的函数,我可以执行上述操作。我如何在c/c++中执行此操作?我有一个库函数(来自CGAL库),它期望一个本身只有一个参数的函数作为参数。理想情况下,我有一个类(SphericalHarmonics),我希望有一个接受一个参数的成员函数。所以我有:FTSphericalHarmonics::distFunction(Point_3p)(注意FT是一个类似于double的类型)但是当然当我尝试SphericalHarmonics*sh=newSphericalHarmonic