C++ C++;和咖喱

C++ C++;和咖喱,c++,design-patterns,c++11,currying,C++,Design Patterns,C++11,Currying,我有密码: #include <iostream> using namespace std; auto fn = ([](int x){ return [x](int y) { return x * y; }; }); int main() { int i = fn(2)(4); // 8 cout << i << endl; return 0; } 有没有办法在以后调用最后

我有密码:

#include <iostream>

using namespace std;

auto fn = ([](int x){
       return [x](int y) {
          return x * y;
       };
});

int main() {

    int i = fn(2)(4); // 8

    cout << i << endl;

    return 0;
}
有没有办法在以后调用最后一个函数,然后与第一个调用绑定?

这对我很有用:

int main() {
    auto i = fn(2);
    cout << i(4) << endl;  // prints 8
    return 0;
}
intmain(){
自动i=fn(2);
这对我来说很有效:

int main() {
    auto i = fn(2);
    cout << i(4) << endl;  // prints 8
    return 0;
}
intmain(){
自动i=fn(2);

coutfn
的结果不是整数,因此不能将
fn(2)
赋值给整数(甚至不知道编译的原因)


您应该能够执行
auto i=fn(2);
fn
的结果不是整数,因此您无法将
fn(2)
赋值给整数(甚至不知道编译的原因)


您应该能够按预期执行以下操作

#include <iostream>

using namespace std;

auto fn = [](int x){
       return [x](int y) {
          return x * y;
       };
  };

int main() {

    auto i = fn(2)(4); // 8
    cout << i << endl;
    auto j = fn(2);
    cout << j(4) << endl;

    return 0;
}
#包括
使用名称空间std;
自动fn=[](整数x){
返回[x](整数y){
返回x*y;
};
};
int main(){
自动i=fn(2)(4);//8

下面的工作是否如预期的那样有效

#include <iostream>

using namespace std;

auto fn = [](int x){
       return [x](int y) {
          return x * y;
       };
  };

int main() {

    auto i = fn(2)(4); // 8
    cout << i << endl;
    auto j = fn(2);
    cout << j(4) << endl;

    return 0;
}
#包括
使用名称空间std;
自动fn=[](整数x){
返回[x](整数y){
返回x*y;
};
};
int main(){
自动i=fn(2)(4);//8

你是指自动i=fn(2)吗?你是指自动i=fn(2)吗?事实上,它是不可编译的。至少在g++中,我的意思当然是
int i=fn(2);
不可编译,
auto i=fn(2)
可以;我使用的是g++4.5,但奇怪的是4.7编译时没有警告
int i=fn(2)
,因为
fn(2)
它没有初始化,也没有编译。至少在g++中,我的意思是当然
inti=fn(2);
没有编译,
auto I=fn(2)
有;我使用的是g++4.5,但奇怪的是4.7编译时没有警告
inti=fn(2)
,因为
fn(2)
它不是int