zoukankan      html  css  js  c++  java
  • c++11::auto

    1、定义变量时,必须初始化 
    auto a = 10;   //正确
    auto b;        //错误
    
    2、不能用于函数参数
    void func(auto a = 1);  //错误
    
    3、auto变量不能作为自定义类型的成员变量
    struct Foo
    {
        auto var1_ = 0;  //error:auto不能用于非静态成员变量
        static const auto var2_ = 0;
    };
    
    4、无法定义数组
    int arr[10] = {0};
    auto aa = arr;  //OK: aa -> int *
    auto rr[10] = arr;  //错误,auto无法定义数组
    
    5、模板实例化类型不能是auto类型
    vector<auto> a = { 1 };  //错误,有初始化也不行
    
    6、无法推导出模板参数
    struct Bar {};
    Bar<int> bar;
    Bar<auto> bb = bar;  //错误:auto无法推导出模板参数
    
    7、auto用于占位符,真正的返回值在后面定义;
    template<class Lhs, class Rhs>
    auto adding_func(const Lhs &lhs, const Rhs &rhs) -> decltype(lhs + rhs)
    {
        return lhs + rhs;
    }
    cout << adding_func<double, int>(10, 2) << endl;
    
    8、支持区间迭代
    for (auto &x : my_array) {
        x *= 2;
    }
  • 相关阅读:
    解决maven导入坐标太慢问题
    +=的扩展
    JavaScript
    多线程
    异常
    面向对象
    数组
    java内存
    循环语句和递归
    剑指 Offer 30. 包含min函数的栈
  • 原文地址:https://www.cnblogs.com/osbreak/p/11077062.html
Copyright © 2011-2022 走看看