草庐IT

c++ - C++14 中的递归 lambda 函数

在C++11中编写递归lambda函数有一个经常重复的“技巧”,如下所示:std::functionfactorial;factorial=[&factorial](intn){returnn(例如RecursivelambdafunctionsinC++0x。)这种技术有两个直接的缺点:std::function的目标对象(通过引用捕获)绑定(bind)到一个非常特殊的std::function对象(此处为factorial)。这意味着生成的仿函数通常不能从函数返回,否则引用将悬空。另一个(虽然不那么直接)的问题是使用std::function通常会阻止编译器优化,这是其实现中需要类

c++ - C++11 和 C++14 中 `bsearch` 的规范是否有缺陷?

继续我对thisquestion的回答,在C++11和C++14中:[C++11,C++14:25.5/2]:ThecontentsarethesameastheStandardClibraryheaderwiththefollowingexceptions:[C++11,C++14:25.5/3]:Thefunctionsignature:bsearch(constvoid*,constvoid*,size_t,size_t,int(*)(constvoid*,constvoid*));isreplacedbythetwodeclarations:extern"C"void*bsea

在 Ubuntu 14.04 中安装 MongoDB 失败

我按照MongoDB官方网站中提到的步骤进行操作。sudoapt-keyadv--keyserverhkp://keyserver.ubuntu.com:80--recv7F0CEB10echo"debhttp://repo.mongodb.org/apt/ubuntu"$(lsb_release-sc)"/mongodb-org/3.0multiverse"|sudotee/etc/apt/sources.list.d/mongodb-org-3.0.listsudoapt-getupdatesudoapt-getinstall-ymongodb-org运行最后一个命令我得到一个错误

在 Ubuntu 14.04 中安装 MongoDB 失败

我按照MongoDB官方网站中提到的步骤进行操作。sudoapt-keyadv--keyserverhkp://keyserver.ubuntu.com:80--recv7F0CEB10echo"debhttp://repo.mongodb.org/apt/ubuntu"$(lsb_release-sc)"/mongodb-org/3.0multiverse"|sudotee/etc/apt/sources.list.d/mongodb-org-3.0.listsudoapt-getupdatesudoapt-getinstall-ymongodb-org运行最后一个命令我得到一个错误

C++14 变量模板 : what is their purpose? 有任何用法示例吗?

C++14将允许创建模板化的变量。通常的例子是一个变量“pi”,可以读取它以获得各种类型的数学常数π的值(int为3;与float最接近的值等)除了我们可以通过在模板结构或类中包装变量来获得此功能之外,这如何与类型转换混合使用?我看到一些重叠。除了pi示例之外,它如何与非const变量一起使用?是否有任何使用示例来了解如何充分利用此类功能及其用途? 最佳答案 Andotherthanthepiexample,howwoulditworkwithnon-constvariables?目前,它似乎为类型单独实例化变量。即,您可以将10分

c++ - 为什么在 C++14 中使用 std::bind 而不是 lambda?

在C++11之前,我经常使用boost::bind或boost::lambda。bind部分进入标准库(std::bind),另一部分成为核心语言的一部分(C++lambdas)并大量使用lambdas更轻松。现在,我几乎不使用std::bind,因为我几乎可以用C++lambda做任何事情。我能想到std::bind的一个有效用例:structfoo{templatevoidoperator()(Aa,Bb){cout对应的C++14是autof=[](autoa,autob){cout更短更简洁。(在C++11中,由于auto参数,这还不起作用。)std::bind是否有任何其他有

c++ - 使用 MSVC 14.0 (VS 2015) 编译 Boost 时编译器版本未知

尝试在我的计算机上编译Boost库时,我收到“未知编译器版本-请运行配置测试并报告结果”。我有最新的Boost(截至发帖日期)-1.58.0。Boost还不支持MSVC14.0吗?如何“运行配置测试”?. 最佳答案 最新(发布此答案时)Boost1.58确实支持MSVC14.0Preview,这是Boost1.58发布时最新的MS编译器。现在,VisualStudio的最新版本是2015RC,它没有包含在boost1.58配置文件中。停止Boost1.58提示未知编译器版本编辑boost/config/compiler/visual

c++ - C++14 中引入的哪些更改可能会破坏用 C++11 编写的程序?

这个问题的答案是communityeffort。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。简介随着C++14(又名。C++1y)标准接近最终版,程序员必须自问向后兼容性和问题与此类有关。问题在thisquestion的回答中据说该标准有一个附录专门用于提供有关修订之间更改的信息。如果可以解释前面提到的附录中的这些潜在问题,或许可以借助与其中提到的内容相关的任何正式文件来解释,这将是有帮助的。根据标准:C++14中引入的哪些更改可能会破坏用C++11编写的程序? 最佳答案 Note:InthispostIconsider

c++ - 如何使用 Boost 实现 C++14 风格的自动返回类型?

假设我有一个将两个值相加的函数。如果我对类型一无所知,那么我基本上必须编写两次函数;一次在实际返回值中,再次作为返回类型说明符:templateautoAdd(constA&a,constB&b)->std::decay::type{returna+b;}虽然这可行,但它是不可取的,因为它难以阅读且难以维护。在C++14中这不是问题,因为我们可以删除返回类型说明符(我不确定它是否会衰减……)。现在,我坚持使用C++11。根据我的经验,每当我在C++中寻找尚未成为标准但有明显需求的功能时,Boostlibrary通常有解决办法。我已经搜索了文档,但我没有找到任何可能对我有帮助的东西。BO

c++ - 对于 C++14 中不确定值和未定义行为的使用,C++ 标准是否发生了变化?

如Doesinitializationentaillvalue-to-rvalueconversion?Isintx=x;UB?中所述C++标准在3.3.2PointofDeclaration节中有一个令人惊讶的例子,其中int是用它自己的不确定值初始化的:intx=12;{intx=x;}Herethesecondxisinitializedwithitsown(indeterminate)value.—endexample]Johannes对此问题的回答表明这是未定义的行为,因为它需要左值到右值的转换。在最新的C++14草案标准N3936中可以找到here此示例已更改为:unsig