草庐IT

BOOST_PP_SEQ_FOLD_LEFT

全部标签

c++ - 我已经编写了 C++ 代码来将 boost::optional 视为一个范围,但它无法编译

我希望将boost::optional视为一个容器,其中可以包含零个或一个元素。从逻辑上讲,我应该能够为容器创建一个迭代器并在其上使用boost::for_each。我的尝试如下,但无法编译。我已经在GodBolt上试过了。https://godbolt.org/g/z5MFfe下面的代码供引用。#include#include#include#includenamespaceboost{templateclassoptional_iterator:publicboost::iterator_facade,typenameOT::value_type,boost::forward_tr

python - 微分方程的解在 boost::odeint 和 scipy.integrate 中完全不同

我正在尝试将我的快速原型(prototype)制作从Python移植到C++。我尝试用一​​个简单的微分方程来测试符号,但对于起始值[2,0],结果非常不同。Python正在衰落,而C++解决方案正在强势崛起。它适用于此处找到的示例:Howtoincorporatetime-varyingparametersfromlookuptableintoboost::odeint,c++但它不适用于我的例子TransferF::TransferF(constdouble&deltaT):dt(deltaT),t(0.0),y(2){//initialvaluesy[0]=2.0;//x1y[1

c++ - 通过索引运算符插入到 boost::program_options::variables_map

我有一个boost::program_options::variables_map参数。现在我想像键值对一样手动插入到这个map中。示例:boost::program_options::variables_mapargsargs["document"]="A";args["flag"]=true;问题是我已经有了这两个选项desc.add_options()("document",po::value())("flag",po::value());但有时他们从命令行得到空输入。所以如果它们是空的,那么我必须在po::variables_mapargs本身中更新它们

c# - 将 boost::signal 包装到 C# 委托(delegate)

假设我有一个异步库,用nativeC++编写,具有与此类似的接口(interface):classconnection{public:boost::signalsig_connection_made;boost::signalsig_error;voidconnect(conststd::string&host,conststd::string&port);};我想用C#包装。有谁知道使用SWIG或类似东西的方法可以让我将信号绑定(bind)到C#委托(delegate)? 最佳答案 您可以使用SWIG将委托(delegate)从C

c++ - 指向 boost 指针容器中元素的指针

我刚刚开始使用boost::ptr_vector。我有一个ptr_vectorpctr作为一个类A的成员,并希望另一个类B引用pctr中的元素。在构造B类对象时,我想在pctr中存储一个指针。由于指针容器不允许访问指针(但只能访问引用),我必须从pctr中获取引用的地址,然后将其存储在类型B的对象中。但是获取引用的地址似乎不直观。有更好的选择吗? 最佳答案 正如您所发现的,boost指针容器可以很好地保护它们的指针。当然,您可以通过获取它将产生的引用的地址来打败它,但请注意,您可能会通过卡在这些指针上来削弱指针容器对权威所有权的声明

c++ - SCons、Boost::ASIO、Windows 预编译 header 和链接器错误

在为多个平台开发C++时,我正在研究在构建过程中使用SCons。我在构建配置中完成了99%,但我在Windows上遇到了一个非常奇怪的错误,该错误与预编译头文件有关。更奇怪的是,它只发生在一个项目上。在这个项目的SConscript文件中,我有以下内容可以在Windows上编译PCH:ifenv['PLATFORM']=='win32':env['PCH']=env.PCH('MyPCH-LSCommon.pch','Common/src/MyPCH.h')[0]env['PCHSTOP']='"MyPCH.h"'我还设置了编译器标志以强制在项目中的所有文件中包含MyPCH.h:ife

c++ - 为什么 Boost 参数选择继承而不是组合?

我想这个网站上的大多数人都会同意可以通过两种方式外包实现:私有(private)继承作文继承最常被滥用。值得注意的是,当另一种形式或继承本来可以更好时,通常会使用公共(public)继承,并且通常应该使用组合而不是私有(private)继承。当然通常的注意事项适用,但我想不出任何时候我真的需要继承来解决实现问题。对于BoostParameterlibrary但是,您会注意到他们选择了继承而不是组合来实现命名参数习语(对于构造函数)。我只能想到经典的EBO(空基优化)解释,因为我看不到这里没有虚拟方法在起作用。有没有人知道更多或可以将我重定向到讨论?谢谢,马修。

c++ - Boost Test 寄存器异常翻译器

有人知道在Boost.Test中使用自动测试用例时如何注册我的自定义异常转换器吗?我找到了一些示例(实际上很少),但它们没有显示如何将此功能与自动测试用例一起使用,这在我看来是boost.test的最大优势。我的示例测试套件:#defineBOOST_TEST_MODULEStateMachineTest#defineBOOST_TEST_DYN_LINK#includeBOOST_AUTO_TEST_SUITE(FirstTest);BOOST_AUTO_TEST_CASE(testBasic){BOOST_CHECK(true);}BOOST_AUTO_TEST_SUITE_END

c++ - Boost.Program_options 固定数量的 token

Boost.Program_options提供了一种通过命令行参数传递多个标记的工具,如下所示:std::vectornums;po::options_descriptiondesc("Allowedoptions");desc.add_options()("help","Producehelpmessage.")("nums",po::value>(&nums)->multitoken(),"Numbers.");po::variables_mapvm;po::store(po::parse_command_line(argc,argv,desc),vm);po::notify(vm

c++ - Boost.Spirit.Lex :( 中 Phoenix 占位符 _val 出错

我是Boost.Spirit.Lex的新手。每次我尝试在我的简单词法分析器的语义操作中使用lex::_val时,都会出现一些奇怪的错误:#ifndef_TOKENS_H_#define_TOKENS_H_#include#include#include#include#include#includenamespacelex=boost::spirit::lex;namespacephx=boost::phoenix;enumtokenids{ID_IDENTIFICATOR=1,ID_CONSTANT,ID_OPERATION,ID_BRACKET,ID_WHITESPACES};te