【发布时间】:2013-08-03 16:41:45
【问题描述】:
在 Eric Niebler 的 Proto-0x 演讲的最后,有一个关于 C++1y 特性的讨论。在讨论return type deduction for normal functions 时,他说,(我想,使用当前的 C++1y 规范),他将无法对普通函数使用返回类型推导(这将允许他替换他的一些RETURN try_call聪明)。我希望我理解了这一点。如果我没有,请纠正我。
遗憾的是,视频中没有捕捉到这一断言背后的基本原理(我几乎听不到任何声音)。我能听到的唯一原因是函数没有被推断为noexcept。但似乎还有另一个更重要的原因。
有没有人知道原因或能够转录讨论内容?
【问题讨论】:
-
@NicolBolas 你可以返回一个
std::function存储一个lambda,但不是一个lambda。 -
@gnzlbg:你做到了。如果出于某种原因,Rapptz 会被删除。
-
@NicolBolas 演讲是关于 C++11,但演讲中的问题是关于对普通函数使用返回类型推导,这是 C++1y 的特性,不是吗?我几乎听不到视频的那部分内容。
-
@NicolBolas 在讨论中,他们也在讨论 c++1y(宽松的 constexpr 和返回类型推导)。他说他想对 C++1y 中的普通函数使用返回类型推导(以替换他的 RETURN try_call hacks)。由于视频质量我听不到的原因,他说(我想用当前的规格)他不能,而且大多数 boost 开发人员也不能。我的问题是,他为什么这么说?他们的理由是什么?当前规范有什么问题?
-
@NicolBolas:你对他所说的话的解释根本不合适。他说他将无法使用该功能,这非常可悲。有什么好伤心的?在其他人都可以使用之前,他将无法使用该功能?是的,他的代码是针对 C++11 编写的。但是当 C++1y 标准化后,他会针对它重写代码。