auto 作为函数参数

auto as function argument

在 C++14 中,这样的事情是合法的(lambdas):-

auto l = [](auto x, auto y) { return x+y; };

但是这样的事情仍然不合法:-

auto sum (auto x, auto y)
{
     return x+y;
}

我的好奇心是为什么没有将第二个添加到标准中(尽管它应该有望添加到 C++17 中)?第二个的优点和缺点是什么?

它没有被添加,因为添加是另一回事,而且时间不是无限的。我们不能指望一次性添加所有有用的增强功能,对吗?如您所见,它将在 C++17 中。

它是未及时为 C++14 准备好的 TS 的一部分。

它将等同于

template <typename T, typename U>
auto sum(T x, U y) { return x+y }

唯一的优点就是稍微短了点。其他都一样。