自动作为函数参数

5
在C++14中,类似这样的语法(适用于lambda表达式)是合法的:-
auto l = [](auto x, auto y) { return x+y; };

然而,像这样的东西仍然是不合法的:-
auto sum (auto x, auto y)
{
     return x+y;
}

我的好奇心是为什么第二个(注:ref-qualifiers)没有被添加到标准中呢(虽然希望在C++17中加入)?第二个的优缺点是什么?

2个回答

6

由于时间有限,我们不能期望所有有用的增强功能一次性添加。因此,这个功能没有被添加。但是,正如您所指出的,这将在C++17中加入。


现在我很困惑。时间是无限的还是有限的,或者时间既是无限的又是有限的?请参考physics.stackexchange - AndyG
1
为了让每个人都满意,我们将时间表示为 O(无穷大) - erip

3

这是C++14标准中未能在规定时间内完成的部分。

它将与以下内容等效:

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

唯一的好处是它稍微短一点。其他方面都是相同的。

包括ODR的后果?每个TU中的定义等等?(我想必须如此-这让我觉得这个新功能只会引发混乱) - Lightness Races in Orbit
@LightnessRacesinOrbit 如果一个人习惯于使用模板,我认为这不会令人困惑。 - Ankit Acharya
@AnkitAcharya:也许吧,但这个功能的字面意思是“使模板看起来像非模板”。对我来说似乎不是一个很好的想法。 - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接