C++ 20的悲哀,还未出世就被群嘲“劝退”

论坛 期权论坛 期权     
InfoQ   2019-6-9 21:24   2551   0

  

  编辑 | Lisa
  C++ 20 要来了!然而,大家都不看好是怎么回事儿? 为了 C++20,C++ 标准委员会曾举办历史上规模最大的一次会议(180 人参会),试图通过会议确定哪些特性可以加入新版本,我们也已经看到媒体爆料的部分新特性,比如 Concepts、Ranges、Modules、Coroutimes 等,但大部分开发人员并不认可此次调整,并将部分新特性归结为“语法糖”。


不少网友看到上述特性纷纷在社交平台吐槽,表示不看好 C++20 版本的发布:


不仅国内如此,国外的一位游戏领域开发人员接连在社交平台发表看法,声明自己不看好 C++20 的新特性,并认为新版本没有解决最关键的问题,他通过使用毕达哥拉斯三元数组示例对 C++20 标准下的代码和旧版本进行对比,明确阐述自己对于 C++20 的态度。

  毕达哥拉斯三元数组,C ++ 20 Ranges 风格 以下是 C++20 标准下代码的完整示例(超长预警):
// A sample standard C++20 program that prints// the first N Pythagorean triples.#include #include #include    // New header! using namespace std; // maybe_view defines a view over zero or one// objects.templatestruct maybe_view : view_interface {  maybe_view() = default;  maybe_view(T t) : data_(std::move(t)) {  }  T const *begin() const noexcept {    return data_ ? &*data_ : nullptr;  }  T const *end() const noexcept {    return data_ ? &*data_ + 1 : nullptr;  }private:  optional data_{};}; // "for_each" creates a new view by applying a// transformation to each element in an input// range, and flattening the resulting range of// ranges.// (This uses one syntax for constrained lambdas// in C++20.)inline constexpr auto for_each =  [](R&& r, Fun fun)        requires Range {      return std::forward(r)        | view::transform(std::move(fun))        | view::join;  }; // "yield_if" takes a bool and a value and// returns a view of zero or one elements.inline constexpr auto yield_if =  [](bool b, T x) {    return b ? maybe_view{std::move(x)}             : maybe_view{};  }; int main() {  // Define an infinite range of all the  // Pythagorean triples:  using view::iota;  auto triples =    for_each(iota(1), [](int z) {      return for_each(iota(1, z+1), [=](int x) {        return for_each(iota(x, z+1), [=](int y) {          return yield_if(x*x + y*y == z*z,            make_tuple(x, y, z));        });      });    });    // Display the first 10 triples    for(auto triple : triples | view::take(10)) {      cout
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:170
帖子:36
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP