gpt4 book ai didi

c++ - 当 C++14 已经有泛型 lambda 时,在 C++20 中引入模板 lambda 的需要是什么?

转载 作者:IT老高 更新时间:2023-10-28 11:58:54 26 4
gpt4 key购买 nike

引入了通用 lambda,使得编写以下内容成为可能:

auto func = [](auto a, auto b){
return a + b;
};
auto Foo = func(2, 5);
auto Bar = func("hello", "world");

很明显,这个通用 lambda func 就像模板函数 func 一样工作。

为什么 C++ 委员会决定为泛型 lamda 添加模板语法?

最佳答案

C++14 通用 lambda 是一种非常酷的方法,可以使用如下所示的 operator () 生成仿函数:

template <class T, class U>
auto operator()(T t, U u) const;

但不是这样的:

template <class T>
auto operator()(T t1, T t2) const; // Same type please

也不是这样:

template <class T, std::size_t N>
auto operator()(std::array<T, N> const &) const; // Only `std::array` please

也不是这样(虽然实际使用起来有点棘手):

template <class T>
auto operator()() const; // No deduction

C++14 lambda 很好,但 C++20 允许我们轻松实现这些情况。

关于c++ - 当 C++14 已经有泛型 lambda 时,在 C++20 中引入模板 lambda 的需要是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54126204/

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