zoukankan      html  css  js  c++  java
  • C++ 14新特性

    参考链接:http://blog.jobbole.com/79228/
     
    1  返回类型推导
    在C++11中,lambda函数参数需要被声明为具体的类型。C++14放宽了这一要求,允许lambda函数参数类型使用类型说明符auto。
    代码简洁,并且可以增强重构。
    实际使用模板参数
    auto lambda = [] (auto x, auto y) {return (x + y); }
    //等同于
    struct unnamed_lambda
    {
    template <typename T,typename U>
    auto operator()(T x, U y) const
    {
    return (x+y);
    }
    };
    auto lambda = unnamed_lambda();

    如果一个函数有多个返回路径,那么每个返回路径返回的值需要具有相同的类型。

    auto f(int i)
    {
      if ( i < 0 )
        return -1;
      else
        return 2.0  //编译会报错
    }
     
    可初始化的Lambda捕获
    Lambda中捕获可以实现初始化,用逗号隔开,从左往右运行
    auto y = [&r = x, x = x+1]()->int {...}
     
    [[deprecated]]属性
    [[deprecated]]标签放到声明的前面即可—可以是类,变量,函数,或者其他一些实体的声明,被放在class,enum等关键字之后,实体名之前。
    标记过时的定义,不建议使用
    class
    [[deprecated]] flaky {
    };
     
    [[deprecated("Consider using something other than cranky")]]
    int cranky()
    {
       return 0;
    }
     
    int main()
    {
      flaky f;
      return cranky();
    }

    其他

    二进制常量以前缀0b(或0B)开头,二进制数字紧随其后。

    单引号字符作为数字分隔符,一百万可以是:1’000’000.00 或者 1’0’00’0’00.00

    #include <iostream>
     
    int main()
    {
      int val = 0b11110000;
      std::cout << "Output mask: "
                << 0b1000'0001'1000'0000
                << "
    ";
      std::cout << "Proposed salary: $"
                << 300'000.00
                << "
    ";
      return 0;
    }
  • 相关阅读:
    C++链式队列基本操作
    C++链栈基本操作
    C++顺序栈基本操作
    C++链表基本操作
    C/C++/JAVA
    C++操作链表
    How Many Maos Does the Guanxi Worth
    Heavy Transportation
    Frogger
    Til the Cows Come Home(Dijkstra)
  • 原文地址:https://www.cnblogs.com/zengyou/p/7762835.html
Copyright © 2011-2022 走看看