zoukankan      html  css  js  c++  java
  • 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之经典书籍和网文推荐

  • 相关阅读:
    10.7
    10.5
    周六
    周五
    周四
    周三
    四则运算
    zabbix——yum安装
    Stirling's Formula
    CONTRASTIVE REPRESENTATION DISTILLATION
  • 原文地址:https://www.cnblogs.com/losophy/p/10599424.html
Copyright © 2011-2022 走看看