【问题标题】:Will C++14 support unconstrained generic functions?C++14 会支持不受约束的泛型函数吗?
【发布时间】: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 中找不到N38894.1.25.1.1 中提到的任何新增内容,所以我会拒绝C++14。跨度>
  • 在 C++17 中吗?

标签: c++ generics auto c++14 c++-concepts


【解决方案1】:

如果我们查看最新的草案标准N3936,它非常接近于 C++14 DIS,即 N3937N3938 对此进行了介绍)。它不包含N38894.1.25.1.1 部分中指定的任何语言。

所以对于 C++14,答案似乎是否定的,但 Bjarne Stroustrup says concepts lite will be a technical report。您可以在ISO cpp's Current Status page 上找到有关技术报告的更多信息,其中说:

在 C++14 之后,委员会考虑生产另一个 C++ 大约在 2017 年成为标准。这并不意味着什么都没有发生 然而,与此同时,因为我们目前有八 (8) 个独立的 技术规范正在进行中,其中一些有望成为 于 2014 年和 2015 年出版。从 2012 年开始,委员会已 过渡到“解耦”模型,其中主要工作可以 独立于标准本身的进展,并作为 单独的 TS。供应商可以选择实施这些,并且 社区可以通过 std::experimental 版本获得经验 每个功能。这让我们可以学习和调整每个功能的设计 基于在正式包含在未来版本中之前的经验 实际的 C++ 标准

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多