Closed
Description
问题描述
第二章在 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 表达式并不能够模板化
的叙述产生矛盾?