【发布时间】:2014-06-15 16:59:23
【问题描述】:
在查看 GCC 4.9.0 版本更改here 时,我惊喜地阅读了以下内容;在 C++ 的“新语言和语言特定改进”部分下:
G++ 支持第 4.1.2 节指定的无约束泛型函数 和N3889: Concepts Lite Specification 的§5.1.1。简而言之,汽车 可以在任何参数声明中用作类型说明符 函数声明器,以引入隐式函数 模板参数,类似于通用 lambda。
// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }
我构建了 GCC 4.9.0,并且我的初始测试按预期工作。我相信,Concepts Lite 将在某种程度上对即将到来的 C++14 规范起到辅助作用。有没有计划让“不受约束的泛型函数”成为 C++ 的一部分?
【问题讨论】:
-
虽然我认为这在 C++17 之前不会 100% 正式发布,但您几乎可以在 C++14 中做到这一点:
auto incr = [](auto x) {return x++;}; -
干杯克里斯。是的,我知道那个。
-
我在最新的标准草案
N3936中找不到N3889的4.1.2和5.1.1中提到的任何新增内容,所以我会拒绝C++14。跨度> -
在 C++17 中吗?
标签: c++ generics auto c++14 c++-concepts