草庐IT

BOOST_STATIC_ASSERT

全部标签

c++ - 我如何扩展 boost spirit 语法

事情是我做了一个对任务有用的语法,但是现在任务已更改,我需要定义新规则。但我不想修改已有的语法喜欢创建一个新的语法,它使用我现有的没有代码的语法重复,所以我只需要定义我需要的新规则。我尝试了一些东西像这样,但不起作用:structNew_grammar:Old_grammar{New_grammar():New_grammar::base_type(Command_list){Command_list%=qi::eps>>+Commands;Comandos%=oneoldCommand|NewCommand;NewCommand=("NewCommand">>stmt)[qi::_v

c++ - std::static_pointer_cast 是否有任何额外的运行时开销?

相对于static_cast,即。所以,如果我们有这两个类型转换Base*b(newDerived());Derived*d=static_cast(b);//(1)shared_ptrb(newDerived());shared_ptrd=static_pointer_cast(b);//(2)第(2)行会比第(1)行慢吗? 最佳答案 是的,它有更多的开销,因为它必须返回一个新的shared_ptr而不是一个新的原始指针。boost实现是:templateshared_ptrstatic_pointer_cast(shared_p

c++ - 在语义 Action 中 boost spirit 改变变量值

我想在语义操作中更改局部变量值,如下所示:#defineBOOST_SPIRIT_USE_PHOENIX_V3#include#include#includenamespaceqi=boost::spirit::qi;namespacespirit=boost::spirit;namespaceascii=boost::spirit::ascii;usingboost::phoenix::ref;usingboost::phoenix::bind;voiddummy(conststd::vector&v,int&var){var=7;}templatestructx_grammar:p

c++ - 默认初始化 boost::optional

有没有办法在不提供T的名字的情况下默认初始化一个boost::optional变量?structMyStruct{inta;};intmain(){boost::optionalopt;opt=MyStruct();//我的目标是在我只想默认初始化时省略提供结构名称​​opt。 最佳答案 如果您的编译器支持可变参数模板并且您使用的是Boost1.56或更高版本,请使用emplace()没有参数:opt.emplace();如果不满足任何一个条件(没有可变参数模板的编译器或较旧的Boost)使用不带参数的in_place工厂:opt=

c++ - 通过 boost 信号 2 的观察者模式

所以,我已经阅读了Boost.Signal2的文档,并且进行了一些谷歌搜索,但我还没有完全找到我需要的东西。我拥有的是一个Controller和一个View概念。Controller将向View发送数据以供其呈现。我想要的是我的Controller调用Controller::Update并在View中触发OnUpdate函数。Controller和View应该是分离的可以发出Controller上的信号以在View中执行Slots这是我到目前为止尝试过的代码:classListener{public:virtualvoidOnUpdate(){};};classView:Listene

c++ - 如果在 user.hpp 中定义了 BOOST_NO_EXCEPTIONS,为什么不能编译 boost::shared_ptr

我有一个嵌入式系统,想在这个系统中使用boost,但需要禁用异常,因为我不想支付异常成本。boost给了一个user.hpp和可设置的宏选项BOOST_NO_EXCEPTIONS和BOOST_NO_EXCEPTION_STD_NAMESPACE,但是boost::shared_ptr不能编译(更准确的说,不能链接)如果定义了这两个宏。shared_ptr_boost.cpp:(.text._ZN5boost6detail12shared_countC2IiEEPT_[_ZN5boost6detail12shared_countC5IiEEPT_]+0x7a):undefinedrefe

c++ - boost::asio::streambuf - 如何重用缓冲区?

我正在实现使用asiosocket.async_read()和boost::asio::async_read_until()方法从套接字异步读取数据的TCP服务器。两者都使用相同的处理程序从boost::asio::streambuf读取数据。通过async_read()调用的完美处理程序:voidhandle_read(constboost::system::error_code&ec,std::size_tytes_transferred)){m_request_buffer.commit(bytes_transferred);boost::asio::streambuf::con

Python3、Boost-Python 和 Cpp 链接器错误

所以我打算把我的笔记本电脑扔出窗外,然后去烧掉AppleHQ。查看以下更新:我无法让python3、boost-python和clang相互协作。我遇到的错误正在运行:clang++-ohello.sohello.cpp调用响应:Undefinedsymbolsforarchitecturex86_64:"__Py_NoneStruct",referencedfrom:boost::python::api::object::object()inhello-0c512e.o"_main",referencedfrom:implicitentry/startformainexecutabl

c++ - Static Cast 访问静态 const 类成员

这个问题在这里已经有了答案:Undefinedreferencetostaticconstint(9个回答)关闭5年前。所以昨天我正在寻找SO,但找不到以下问题的答案。这种情况来self正在使用的一些代码,但这里是MCVE来演示它。我在A.h中定义了一个类A,其中只有一个静态常量。我已经在标题中对其进行了初始化。#ifndefA_H_#defineA_H_classA{public:staticconstinttest=5;~A(){};};#endif/*A_H_*/然后我有一个B类需要从A类访问publicstaticconst。在这个例子中,它将把值深度复制到一个vector中。

c++ - 无法在 C++17 之前的模式下使用 static constexpr 进行编译

为什么以下最小示例不能用c++11或c++14编译,而是用c++17编译>和c++2a?#include#include#include//works://staticconstexprintVALUE_LIMIT_A=std::numeric_limits::max();classClassy{//doesnotworkinc++11(constexprintroduced)norc++14://worksifc++17ornewer:staticconstexprintVALUE_LIMIT_A=std::numeric_limits::max();intVALUE_LIMIT_B