问题标签 [generic-lambda]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 模板函数与具有自动参数的命名 lambda
之间有什么区别
以及使用带有自动参数的 lambda 的 C++14 替代方案?
应该首选哪一个?
c++ - C++14 结合通用 lambda 和变量模板
我知道通用 lambdas,也知道变量模板,但是,这是做什么的?甚至允许吗?
如果允许,是否可以按预期使用?也就是说,作为f<type>(var_a, var_b)
?
c++ - 何时使用函数模板而不是通用 lambda?
我可以写一个函数模板:
但在 C++14 中,我还可以创建一个通用 lambda:
里面f1
我可以T
直接参考。在f2
中,没有T
可参考的,但我可以使用以下方法获得相同的效果decltype
:
通用 lambda 的一个优点是我可以完美地转发它。我不能用函数模板做到这一点:
是否存在使用函数模板比使用通用 lambda 更好的情况?
c++ - 找出汽车的类型
我在 C++1y 中使用通用 lambda,我经常被不知道什么是auto
变量/参数的类型而感到困惑。有什么好的方法可以查出来吗?
目前我正在使用typeid(decltype(arg)).name())
,但它不是很有用。@encode给出了稍微好一点的结果,但仍然很难破译它
例子:
输出
我主要想知道的是参数a lvalue ref/rvalue ref/passed by value等。
我正在使用 Xcode 5.1.1
c++ - 这个创建元组的习语有名字吗?
在Boost 邮件列表中,@LouisDionne 最近发布了以下创建类似元组的实体的巧妙技巧:
聪明之处在于list
lambda 将可变参数列表作为输入,并返回一个 lambda 作为输出,该输出将采用另一个 lambda 对其输入进行操作。类似地,length
是一个 lambda 采用类似列表的实体,它将sizeof...
向列表的原始输入参数提供可变参数运算符。运算符被包裹在一个 lambda 中,sizeof...
以便它可以传递给list
.
问题:这个元组创建习语有名字吗?也许来自更常用高阶函数的函数式编程语言。
c++ - 通用 lambda:语法糖与否?
C++14 通用 lambda 是否为语言带来了真正的改进,或者它们是一种语法糖?是否存在某些情况
不能替换为
或者
?
@Kerrek SB在评论中提供了非常有趣的链接,说明了通用 lambda 的强大功能:
Boost.Hana:用于表达元编程的异构组合器(github)
c++ - 通用 lambda 的 Arity
可以通过访问非泛型 lambda 的operator()
.
这对于没有模板化[](int x){ return x; }
的东西来说很好而且花花公子。operator()
但是,通用 lambdas 做模板,operator()
并且只能访问模板的具体实例化 - 这有点问题,因为我无法手动提供模板参数,operator()
因为我不知道它的元数是什么。
所以,当然,像
不起作用。
我不知道要转换成什么,也不知道要提供什么模板参数(或多少)(operator()<??>
)。
任何想法如何做到这一点?
c++ - 这个自应用阶乘函数的类型是什么?
我用 C++ 编写了一个匿名阶乘函数,并用 g++4.9.2 编译了我的代码。它运作良好。但是,我不知道我的函数的类型。
fac
所以,我想知道:和的类型是self
什么?如果我只是将 C++ 代码翻译成 Haskell,它不会编译,因为它涉及无限类型:
我必须围绕它定义一些递归类型的工作:
那么,为什么 g++ 能得到完全正确的fac
函数类型,而 g++ 认为fac
函数是什么类型呢?
c++ - 在 Code::Blocks 中启用 `-std=c++14` 标志
我已经为 Windows 安装了 Code::Blocks 并且想要编译 C++14 代码,比如通用 lambda,但是我从codeblocks.org安装的 Code::Blocks 的二进制版本不支持 flag -std=c++14
。
如何更新编译器并启用-std=c++14
Code::Blocks 的标志?
c++ - 将 SFINAE 与通用 lambda 一起使用
通用 lambda 可以利用“替换失败不是错误”规则吗?例子
是否有任何解决方法或计划将其包含在语言中?此外,由于通用 lambda 是底层的模板化函数对象,这不能完成是不是有点奇怪?