Skip to content

Question about Chapter 3 Generic Lambda #242

Closed
@bLueriVerLHR

Description

@bLueriVerLHR

问题描述

第二章在 auto 关键字中说明并展示了 C++20 中在参数列表里使用 auto 构成一定意义上的模板函数。但是在第三章的泛型 Lambda 中却说到 auto 不能作为形式参数的类型。在不指明版本的时候,是否会产生叙述上的矛盾?尤其本书目标在于C++11/14/17/20 多个版本。

因为刚开始学习 modern C++,所以对在读到上述内容的时候产生了比较大的困惑。

同时也有我个人不确定的内容。

在 C++14 可以使用变量模板的方式对 Lambda 函数添加模板参数。不过没有隐式类型推导,需要在参数列表中指明。例如:

template <typename TL, typename TR>
auto func = [](const TL &l, const TR &r) noexcept -> decltype(l + r) {
    return l + r;
};

int main() {
    func<int, long>(1, 2);
    return 0;
}

这个是否会和 Lambda 表达式并不能够模板化 的叙述产生矛盾?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions