草庐IT

lambda表达式

全部标签

c++ - 将 C++ lambda 转换为 C 函数

我正在编写一些包装代码,其中外部库调用C++函数(使用可变参数模板等)。关键点是外部库需要一个c函数,这通常没问题,因为这是合法的:LibraryFuncTypefn=[](params){...}虽然我可以轻松地手动完成此操作,但我想使用以下方法自动包装:function_(context,"name",myfunc);为此,我需要一个类似于以下的函数:templatestaticvoidfunction_(Context&ctx,conststd::string&name,std::functionfn){ctx.registerFunction(name,[fn](State*s

c++ - 在 C++ 中使用 Boost 正则表达式缩小 HTML

问题如何使用C++压缩HTML?资源外部库可能是答案,但我更希望改进我当前的代码。尽管我很期待其他可能性。当前代码这是我对thefollowinganswer的C++解释.我必须从原始帖子更改的唯一部分是顶部的这部分:“(?ix)”...和一些逃生标志#includevoidminifyhtml(string*s){boost::regexnowhitespace("(?ix)""(?>"//Matchallwhitespansotherthansinglespace."[^\\S]\\s*"//Eitherone[\t\r\n\f\v]andzeroormorews,"|\\s{2,

c++ - 是否应该为类成员访问表达式中的依赖类/命名空间名称延迟名称查找?

下面的代码被clang和gcc都拒绝templatevoidf(Tt){t.Dependent::f();//clangaccepts,gccrejectst.operatorDependent*();//bothreject}structDependent{voidf();};structA:Dependent{operatorDependent*();};templatevoidf(A);我对标准的阅读表明这两种表达方式都应该被接受。在这两种情况下,Dependent只能是类型名称。在这两种情况下,名称Dependent都将“在对象表达式的类中查找”t。由于t是一个依赖于类型的表达

c++ - 使用 boost 的 Glob 风格正则表达式模式匹配

我需要搜索与某些模式匹配的文件,该模式类似于使用boost在glob命令行中给出的模式。例如:如果输入是myFiles*.c,它应该匹配文件myFiles.c、myFiles1.c、myFiles123.c等。尝试在perl模式下使用boost::regex_match。但我必须将输入模式作为myfiles.*.c而不是myFiles*.c。我可以识别myfiles*.c并将其转换为myFiles.*.c并在perl模式下将其提供给boost::regex_match。但是输入模式可以是glob样式中的任何有效正则表达式,因为它是为命令行实用程序提供的。在boost中有什么方法可以以g

c++ - std::max 与 lambda 和 auto

C++11难道不能做到这一点吗?使用当前的clang编译器(OSX10.8上的Xcode5)无法编译:std::max_element(group->GetComponents().begin(),group->GetComponents().end(),[](autoa,autob){returna.length>b.length;});错误信息是:Stuff.cp:68:40:函数原型(prototype)中不允许使用“auto” 最佳答案 在C++1y中你有通用的lambda,所以语法将在clang3.5中编译。.lambda

c++ - 带有默认参数的模板类的 operator<< 中的 lambda 错误

谁能告诉我这段代码出了什么问题:template//data;templatevoiditerate(Ff)const{for(unsignedi=0;i&a)//Line17{a.iterate([&os](unsignedi,constB&x){osGCC4.8.1和--std=c++11的错误消息:test.cpp:Infunction‘std::ostream&operator&)’:test.cpp:17:41:error:defaultargumentfortemplateparameterforclassenclosing‘operator&)::__lambda0’a.

通过Java中的GCS的特定表达式列出文件

有没有人实现此功能?等同于ls-ltr*xyz*在Unix中,我想在我的云数据流代码中实现相同的目标。任何铅都将不胜感激。谢谢你。看答案可以在客户端进行此过滤。这是使用google-cloudJava客户端库访问GoogleCloudStorageAPI。下面的示例列出了与给定的正则表达模式匹配的存储桶目录中的所有文件。我使用了正则表达式,而不是壳命令的范围图案ls由于正则表达式更灵活,因此支持。我建议您通过Java库文档google-cloud.例子importcom.google.api.gax.paging.Page;importcom.google.cloud.storage.Blob

c++ - 我怎样才能*有效地*从嵌套表达式生成所有类型的元组?

假设我有一些包含类型排列的模板表达式,在本例中它们来自AbstractSyntaxTree:templatestructBranch{};templatestructLeaf{};输入表达式可以是Branch的任意嵌套组合和Leaf类型,但为了简单起见,我将创建一个包含单个Leaf的线性AST包裹N层层深入Branch类型:usingExpression=Branch>;//N=2为了这个问题,我创建了一个函数来动态生成这些表达式,这样我就可以演示我在绘图方面遇到的问题。所以这里是我将用来生成我的表达式的函数://wrapLeafinBranchNnumberoftimes:templ

c++ - 表达三元条件的结果类型 `?:`

您为以下函数指定的返回类型是什么,它应该像?:但没有惰性?我的第一次尝试如下:templateT1myif(boolb,T1&&true_result,T2&&false_result){if(b){returntrue_result;}else{returnfalse_result;}}但后来我发现给定:intf(){return42;}intx=5;同时(true?x:f())++;无法编译,myif(true,x,f())++;编译良好并返回悬空引用。我的第二次尝试是将返回类型更改为:typenamestd::remove_reference::type然后(true?x:x)+

c++ - 使用正则表达式替换匹配项

我正在尝试进行某种类型的“字符串扩展”,其中我用数据库中的字符串替换键。标记的格式为{$}.我正在使用尝试完成这项工作,但我遇到了一些后勤问题。我希望能够一次性替换字符串,但修改字符串(s)会使smatch中的迭代器无效对象。这或多或少是我正在尝试做的事情:#include#include#includeusingnamespacestd;intmain(){mapm;m.insert(make_pair("severity","absolute"));m.insert(make_pair("experience","nightmare"));strings="Thisisan{$se