lambda相关内容
在我的C ++应用程序(使用Visual Studio 2010)中,我需要存储std ::函数,如下所示: class MyClass { public: typedef std :: function我的功能; MyClass(Myfunction& myFunction); private: MyFunction m_myFunction; /
..
我发现自己写的代码基本上看起来像这样: 使用boost :: system :: error_code; socket.async_connect(端点,[&](error_code错误) { if(错误) { print_error b $ b return; } //读标题 socket.async_read(socket,somebuffer,[&](err
..
这段代码对JS开发人员来说不是未知的 function get_counter() { return( function(){ var c = 0; return function(){return ++ c;}; }) } 它基本上创建一个创建不同枚举器。所以我想知道如果同样的事情可以做到在C + + 11与新的lambda语义?我最后写这个C ++,不
..
我只是试图比较C ++ 11中lambda表达式的性能,所以我做了一个测试 - 计算元素的向量中的 double 值。下面是实现: #include #include #include #include #define LOG(x){std :: cout
..
是c ++ inline中的lambda函数? 编译器可以优化内联函数的调用以提高效率。 的问题是:可以编译器优化lambda函数的调用,就像它对简单的内联函数。 例如。 std :: vector vd; std :: for_each(vd.begin(),vd.end(),[](const double d){return d * d;});
..
在C ++ 11之前,我使用了 boost :: bind 或 boost :: lambda bind 部分使其进入标准库( std :: bind ),另一部分成为核心语言的一部分(C ++ lambdas)和使用lambdas更容易。现在,我几乎不使用 std :: bind ,因为我可以做几乎任何事情与C + + lambdas。对于 std :: bind 有一个有效的用例,我可以想到:
..
(我已阅读什么是生命周期lambda 我理解C ++ lambda语法只是用于制作实例的糖的匿名类与一个调用操作符和一些状态,我理解该状态的生存期要求(由是否通过引用的值来决定)。但lambda对象本身的生命周期是什么?在下面的例子中, std :: function 实例返回有用吗? code> std :: function meta_add(int x){
..
C ++ 11同时具有lambda和std :: function,但不幸的是,它们有不同的类型。 一个结果是,不能在更高阶函数中直接使用lambda,例如lisp中的map。例如,在以下代码中 #include #include using namespace std; template
..
这被g ++(4.9.3和5.2.0)拒绝,但被clang 3.5.0接受: int main(){ const int ci = 0; auto lambda = [& cap = ci](){}; } g ++给出错误:binding'const int'引用类型'int&'抛弃限定符。看来,g ++拒绝允许捕获非const引用,除非当然使用纯旧的C ++
..
我有一个boost ::变体,我想执行函数只有当变体是一个特殊的类型,所以我修改了这个函数: template void if_init(Variant& opt_variant,std :: function functor){ if(auto * ptr = boost :: get& b $ b f
..
所以,我有std :: map,lambda和stl算法(remove_if)的问题。实际上,与std :: list或std :: vector的代码相同。 我的测试示例: #include #include #include struct Foo { Foo():_id(0){} Foo(int
..
有这样的类: class A { public: bool hasGrandChild const; private: bool hasChild()const; vector儿童 }; 为什么不能使用私有方法 hasChild code>在方法 hasGrandChild()中定义的lambda表达式是这样吗? bool A :: h
..
如何将lambda分配为默认参数?我想这样做: int foo(int i,std :: function f = [](int x) - > int {return x / 2;}) { return f(i); } 但是我的编译器(Mac OS X上的g ++ 4.6) > 错误:本地变量'x'可能不会出现在此上下文中
..
请查看以下C ++ 0x lambda相关代码: typedef uint64_t(* WEIGHT_FUNC) ); typedef std :: map CallbackTable; CallbackTable表; table [“rand_weight”] = [](void * param) - > uint6
..
我想通过一个lambda函数指针,它嵌套在一个班,对Windows API的回调函数。我发现没有地方可以指定 __ stdcall 关键字。我用nm命令有人告诉我,编译只支持 __ CDECL ,但经过转储obj的文件,我发现编译将产生三个辅助函数( __ stdcall , __ cdecl , __ fastcall )。所以我的问题是,我怎么可以指定调用约定? 那些下面的代码是我的测试
..
主要问题 我试图使用GCC 4.7.2编译以下代码: #include int foo(){ static int bar; return [& bar](){return bar ++; }(); // lambda capture by reference } int main(int argc,char * argv []){ s
..
我试图从移动捕获的lambda表达式创建一个std ::函数。注意,我可以创建一个移动捕获lambda表达式没有问题;只有当我试图将它包装在一个std ::函数,我得到一个错误。 例如: auto pi = std :: make_unique(0); //这里没有问题! auto foo = [q = std :: move(pi)] { * q = 5;
..
我试图创建一个函数,可以调用一个lambda,需要0,1或2参数。由于我需要代码工作在g ++ 4.5和vs2010(不支持可变参数模板或lambda转换为函数指针),我想出的唯一的想法是选择哪个实现基于arity调用。下面是我的非工作猜测如何应该看起来。有没有办法修复我的代码或有一个更好的方法来做这个一般来说? #include #include
..
对于以下代码: struct B { void g() { [](){B :: f(); }(); } static void f(); }; g ++ 4.6显示错误: test.cpp:在lambda函数中: test.cpp:44:21:错误:未对此lambda函数捕获“this” (有趣的是,g +
..
将lambda表达式视为可调用对象的“语法糖”,可以表示未命名的底层类型? 例如: struct gt { bool operator()(int l,int r){ return l> r; } }; 现在, [](int l,int r){return l> ; r; } 是上述代码的优雅替代(加上必要的gt的可调用对象的创建),但是有一种方法来表达
..