• c++11:模板


    c++11中Universal Reference类型的模板参数的推导规则?

    Universal References in C++11

    简单来说就是type&& + syntax + type deduction,即可以引用左值,也可以引用右值。 

    template<typename T>
    void f(T&& param); // “&&” 可能 代表rvalue reference

    如果一个变量或者参数被声明为T&&,其中T是被推导的类型,那这个变量或者参数就是一个universal reference

    “T需要是一个被推导类型”这个要求限制了universal references的出现范围。在实践当中,几乎所有的universal references都是函数模板的参数。因为auto声明的变量的类型推导规则本质上和模板是一样的,所以使用auto的时候你也可能得到一个universal references。

    一个universal reference必须具有形如T&&。

    和所有的引用一样,你必须对universal references进行初始化,而且正是universal reference的initializer决定了它到底代表的是lvalue reference 还是 rvalue reference:

    • 如果用来初始化universal reference的表达式是一个左值,那么universal reference就变成lvalue reference。
    • 如果用来初始化universal reference的表达式是一个右值,那么universal reference就变成rvalue reference。

    Effective Modern C++ 条款1 理解模板类型推断

    C++11之经典书籍和网文推荐

  • 相关阅读:
    James 3.1服务器的安装与搭建
    Mybaits整合Spring
    动态sql
    Mybatis核心配置文件SqlMapConfig.xml
    Mapper动态代理方式
    WPF DatePicker
    UITableView(修改单元格)
    UITableView
    UIImageView
    UILabel
  • 原文地址:https://www.cnblogs.com/losophy/p/10599424.html
Copyright © 2020-2023  润新知