gpt4 book ai didi

c++ - 可以对 lambda 函数进行模板化吗?

转载 作者:IT老高 更新时间:2023-10-28 11:27:12 25 4
gpt4 key购买 nike

在 C++11 中,有没有办法对 lambda 函数进行模板化?还是它本身就太具体而无法模板化?

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

最佳答案

2018 年更新:C++20 将带有模板化和概念化的 lambda。该功能已集成到标准草案中。


2014 年更新:C++14 已于今年发布,现在提供具有与本示例相同语法的多态 lambda。一些主要的编译器已经实现了它。


目前(在 C++11 中),遗憾的是没有。多态 lambda 在灵 active 和功能方面会非常出色。

它们最终成为单态的最初原因是因为概念。概念使这种代码情况变得困难:

template <Constraint T>
void foo(T x)
{
auto bar = [](auto x){}; // imaginary syntax
}

在受限模板中,您只能调用其他受限模板。 (否则无法检查约束。) foo 可以调用 bar(x) 吗? lambda 有什么限制(毕竟它的参数只是一个模板)?

概念还没有准备好解决这类问题;它需要更多的东西,比如 late_check (在调用之前不会检查概念)和其他东西。更简单的方法是放弃所有内容并坚持使用单态 lambda。

但是,随着从 C++0x 中删除概念,多态 lambda 再次成为一个简单的命题。但是,我找不到任何建议。 :(

关于c++ - 可以对 lambda 函数进行模板化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com