相关疑难解决方法(0)

lambda函数可以模板化吗?

在C++ 11中,有没有办法模板化lambda函数?或者它本身太具体而无法模板化?

我理解我可以定义一个经典的模板类/仿函数,但问题更像是:语言是否允许模板化lambda函数?

c++ lambda templates c++11

210
推荐指数
7
解决办法
8万
查看次数

Lambda表达式:为什么没有参数类型推断?

可能重复:
C++ 0x和缺乏多态Lambda - 为什么?

C++ 0x lambda表达式支持返回类型推断到某一点.为什么参数类型也不是自动确定的?

例如,为什么我不能写:

void somefunc(const std::vector<int>& v) 
{
    std::sort(v.begin(), v.end(), [](x, y) { return x < y; });
}
Run Code Online (Sandbox Code Playgroud)

似乎编译器应该能够找出它x并且y是类型的int.

c++ lambda c++11

6
推荐指数
0
解决办法
294
查看次数

模板C++ 0x lambda函数...还是函子/谓词?

我最近升级了我,g++所以我可以享受lambda功能.一切都很棒,我非常感谢那些在C++和gcc中成功的人.我似乎无法解决一件事 - 如何让lambda的参数被模板化?以下是用于演示此问题的lambda用法的基本示例.

示例#1,一切都很美味:

#include <cstdio>

struct bar {
    bar () {}

    void say () {
        printf ("bar::say()\n");
    }

    void say () const {
        printf ("bar::say() const\n");
    }
};

template <typename T>
void do_work (const T & pred) {
    bar b;
    pred (b);
}

int main () {
    do_work ([] (bar & b) { b.say (); });
}
Run Code Online (Sandbox Code Playgroud)

现在,假设do_work现在使用不同的参数类型调用谓词两次.所以这里是示例#2:

#include <cstdio>

struct foo {
    foo () {}

    void say () {
        printf ("foo::say()\n");
    }

    void say …
Run Code Online (Sandbox Code Playgroud)

c++ lambda templates c++11

3
推荐指数
1
解决办法
2877
查看次数

什么是多态lambda?

lambdas(匿名函数)的概念对我来说非常清楚.而且我知道类的多态性,运行时/动态调度用于根据实例的派生类型调用适当的方法.但是lambda究竟能够多态化吗?我是另一个Java程序员,试图学习更多有关函数式编程的知识.

polymorphism lambda haskell functional-programming function

2
推荐指数
1
解决办法
2521
查看次数