草庐IT

BOOST_STATIC_ASSERT

全部标签

c++ - 使用 static_assert 检查 Q_OBJECT 宏

如果我得到的类型声明不包含Q_OBJECT宏,我有一些有趣的需要显示编译错误。我发现了一种不好的方法。实际上它重复了Qt开发人员的想法来做同样的事情:templatevoidcheckForQObjectMacro(){reinterpret_cast(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast(0));}这很好用,但确实给出了奇怪的错误消息。我想显示一条可读的消息。一种方法是使用static_assert构造。但我不知道如何实现Q_OBJECT宏存在的静态验证条件。也许有人可以提出一个漂亮的黑客?也非常感谢任何想法。

c++ - 使用 boost::mpi 的 mpi 中的消息大小是否有限制?

我目前正在openMPI之上使用boost::mpi编写模拟,一切运行良好。但是,一旦我扩大系统规模,因此必须发送更大的std::vectors,我就会出错。我已将问题简化为以下问题:#include#include#include#include#include#includenamespacempi=boost::mpi;intmain(){mpi::environmentenv;mpi::communicatorworld;std::vectora;std::vectorb;if(world.rank()==0){for(size_ti=1;i打印出来:a1B1a2B2a4B4.

python - 在一个共享对象中 boost python 多个模块

我正在尝试通过boostpython创建一个包含多个模块的包。原因是我们想要公开一个非常大的API,将它分组到不同的模块中以便于使用和保留python内存使用是有意义的。另一方面,我们被迫(出于超出这个问题范围的原因将其编译成单个共享对象)所以我用boostpython创建了一个导出多个模块的包,如下所示:voidexportClass1(){namespacebp=boost::python;//maptheIOnamespacetoasub-module//make"frommyPackage.class1import"workbp::objectclass1Module(bp::

c++ - Boost::Spirit - on_error 不打印

我正在尝试使用Boost::Spirit::qi的on_error机制来找出解析失败的原因。我在on_error函数处设置了一个断点,该函数正在被调用,但没有输出(nada、nothing、void、...)。简单的on_error:on_error(level1,boost::phoenix::ref(std::cout)复杂的on_error(来自不同网站):on_error(start,boost::phoenix::ref(std::cout)(qi::_3,qi::_2)这是我的类,包含简单的on_error:templatestructEvent_Compound:qi::

c++ - 用 boost::spirit 解析成一个 vector<vector<double>>

我的目的是将逗号分隔的值列表解析为嵌套vector。这个列表是二维的。基本问题是:是否可以用boost::spirit解析成vector的vector?类似于“牵引力”下的表格:''RPM0,5000,10000,15000,20000,25000''Temp'-40.,0.,20.,40.''Traction200.,175.,170.,165.,160.,150.200.,175.,170.,165.,160.,150.165.,165.,160.,155.,145.,145.160.,155.,150.,145.,145.,140.'下一步,我想读入4维数据,但目前我正在努力处理

c++ - Boost 或标准库是否提供了一种方法来检查转换是否无损?

我正在寻找一个标准库或Boost函数,它们可以无损地将数字转换为另一种基本类型,并以某种方式告诉我转换是否无损(如果不是,则抛出异常)。以下是一些示例:autox=lossless_cast(1u);//ok,doublecanrepresent1autox=lossless_cast(1.2);//fail,intcan'trepresent1.2autox=lossless_cast(1E200);//fail,intcan'trepresent1E200boost::numeric_cast接近于它会拾取超出目标类型数值范围的转换,但如果它们是无损的但在目标类型内则不会(参见我的

python - 关于boost-python : dyld: Symbol not found: _PyBaseObject_Type

当我运行我的代码时,我遇到了一个关于boost-python的问题。就像这样:dyld:Symbolnotfound:_PyBaseObject_TypeReferencedfrom:/opt/local/lib/libboost_python-mt.dylibExpectedin:flatnamespace我的项目几个月前就可以正常运行了。但是现在,当我重新配置环境时,它无法运行。-几个月前,我用homebrew配置环境,就像这样:brewinstallboostbrewinstallpythonbrewinstallboost-pythonbrewinstallopencv(Myp

c++ - std::move into static_pointer_cast:为什么 static_pointer_cast 没有右值引用重载?

假设我们有一个函数需要一个按值共享的指针。(在现实生活中的例子中,我通过右值引用获取它并将其转发给成员。)voidf(std::shared_ptrptr){...}但是我们只有一个指向基类的共享指针,所以我们使用static_pointer_cast:std::shared_ptrptr=std::make_shared();f(std::static_pointer_cast(ptr));第一个赋值(从临时构造ptr)是否触发了引用计数的原子递增和递减,或者共享指针是否被移动?(请注意,它正在向上转换。)在static_pointer_cast中有引用计数的原子增量。如果我们不再需

c++ - 使用无法安装的类的有效 STATIC 成员函数

我有以下代码:在gcc-3.4、gcc-4.3、intel编译器下编译没有问题,在MSVC9下编译失败。MSVC告诉“使用未定义类型c_traits,同时编译类模板成员函数voidfoo::go(void)与C=short。编译器试图安装未使用类的未使用成员函数,因为根本没有使用这个类。我可以通过专门化整个类foo而不是专门化来解决这个问题它的成员函数。但重点是,由于不同的原因,对整个类(class)进行特化对我来说有点问题。大问题:什么是正确的?我的代码是否错误,gcc和intel编译器只是忽略了这个问题,因为它们没有完全安装foo,或者代码正确,这是MSVC9(VC2008)的错误

c++ - 中断 boost::asio 同步读取?

我正在使用asio同步套接字从后台线程通过TCP读取数据。这被封装在“服务器”类中。但是,我希望线程在调用此类的析构函数时退出。问题是对任何读取函数的调用都会阻塞,因此无法轻易终止线程。在Win32中有一个API:WaitForMultipleObjects可以完全满足我的要求。如何使用boost实现类似的效果? 最佳答案 在我们的应用程序中,我们设置了“终止”条件,然后使用自连接到线程正在监听的端口,以便它醒来,记录终止条件并终止。您还可以检查boost实现-如果他们只是在套接字上进行普通读取(即,不在内部使用WaitForMul