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;
    }
  • 相关阅读:
    改写历史,永久删除git库的物理文件
    双调排序
    GitHub从无到有
    Nginx的安装与基本应用
    Django从无到有的艰苦历程
    pycharm 相关设置问题
    ORM介绍
    Django中的过滤器
    FBV和CBV的差异
    django中models field详解
  • 原文地址:https://www.cnblogs.com/osbreak/p/11077062.html
Copyright © 2011-2022 走看看