在C++中返回lambda函数
这段代码可以工作,但是为什么我需要第一行呢 为什么下面的代码不起作用在C++中返回lambda函数,c++,lambda,C++,Lambda,这段代码可以工作,但是为什么我需要第一行呢 为什么下面的代码不起作用 typedef int (*identity_t)(int); identity_t retFun() { return [](int x) { return x; }; } typedef使编写函数声明更容易,但如果您知道正确的语法,则不需要typedef: int (*)(int) retFun() { return [](int x) { return x; }; } 正如您所看到的,typedef不仅
typedef int (*identity_t)(int);
identity_t retFun() {
return [](int x) { return x; };
}
typedef使编写函数声明更容易,但如果您知道正确的语法,则不需要typedef:
int (*)(int) retFun() {
return [](int x) { return x; };
}
正如您所看到的,typedef不仅使书写更容易;它也使其更易于阅读。typedef使编写函数声明更容易,但如果您知道正确的语法,则不需要typedef:
int (*)(int) retFun() {
return [](int x) { return x; };
}
正如您所看到的,typedef不仅使书写更容易;从C继承下来的C++语法很奇怪,违反直觉,而且过时。你需要用typefef来处理这个事实
int (*retFun())(int) {
return [](int x) { return x; };
}
坦率地说,这是一个无法理解的混乱局面
< > C++语法的新成果有助于减轻这个问题。
int (*retFun())(int) { ... }
新语法大部分是从左到右编写的,就像人们读到的那样
auto retFun () -> auto (*)(int) -> int {
return [](int x) { return x; };
}
retFun是
auto retFun
。。。一个不带参数并返回
() ->
(int) ->
。。。指向
auto (*)
。。。接受整型参数并返回
() ->
(int) ->
。。。整数
C++继承自C的语法是怪异的、违反直觉的和过时的。你需要用typefef来处理这个事实
int (*retFun())(int) {
return [](int x) { return x; };
}
坦率地说,这是一个无法理解的混乱局面
< > C++语法的新成果有助于减轻这个问题。
int (*retFun())(int) { ... }
新语法大部分是从左到右编写的,就像人们读到的那样
auto retFun () -> auto (*)(int) -> int {
return [](int x) { return x; };
}
retFun是
auto retFun
。。。一个不带参数并返回
() ->
(int) ->
。。。指向
auto (*)
。。。接受整型参数并返回
() ->
(int) ->
。。。整数
相关:使用AUTO也会使它更容易阅读,同时仍然避免TyWuff:AutoReFung:int INT*{}使用AUTO也会使它更容易阅读,同时仍然避免TyPufF:AutoReFung:int INTIN{}…坦白地说,我不明白为什么C++语法更好。你能把它一块一块地分解吗?或者把我链接到我可以阅读更多关于新语法的地方?代替Autoto,我们可以在出现的地方使用一些东西吗?不幸的是,不,这是我们所坚持的语法疣。坦白说,我不明白为什么C++语法更好。你能把它一块一块地分解吗?或者将我链接到我可以阅读更多关于新语法的信息的地方?我们可以在出现新语法的地方使用一些东西而不是“自动”吗?不幸的是,不,这是一个语法上的漏洞。