当前位置: 首页 > news >正文

西宁网站制作哪家好艾滋病多久可以查出来

西宁网站制作哪家好,艾滋病多久可以查出来,国务院加强政府网站建设,山东省建设项目备案证明网站一、decltype 关键字 1、介绍 decltype 是 C11 新增的一个用来推导表达式类型的关键字。和 auto 的功能一样,用来在编译时期进行自动类型推导。引入 decltype 是因为 auto 并不适用于所有的自动类型推导场景,在某些特殊情况下 auto 用起来很不方便&…

一、decltype 关键字

1、介绍

decltype 是 C++11 新增的一个用来推导表达式类型的关键字。和 auto 的功能一样,用来在编译时期进行自动类型推导。引入 decltype 是因为 auto 并不适用于所有的自动类型推导场景,在某些特殊情况下 auto 用起来很不方便,甚至压根无法使用。

auto varName = value;
decltype(exp) varName = value;

auto与decltype在形式上的区别,如下:

  • auto 根据 = 右边的初始值推导出变量的类型,decltype 根据 exp 表达式推导出变量的类型,跟 = 右边的 value 没有关系
  • auto 要求变量必须初始化,因为 auto 是根据变量的初始值来推导变量类型的,如果不初始化,变量的类型也就无法推导。而 decltype 不要求,因此可以写成如下形式:
decltype(exp) varName;

2、推导规则

(1)如果 exp 是一个不被括号()包围的表达式,或者是一个类成员访问表达式,或者是一个单独的变量,decltype(exp) 的类型和 exp 一致

#include<string> 
#include<iostream>
using namespace std;class A {
public:static int total;string name;int age;float scores;
}int A::total = 0;int main()
{int n = 0;const int &r = n;A a;decltype(n) x = n;           // n 为 int,x 被推导为 intdecltype(r) y = n;           // r 为 const int &,y 被推导为 const int &decltype(A::total)  z = 0;   // total 是类 A 的一个 int 类型的成员变量,z 被推导为 intdecltype(A.name) url = "www.baidu.com"; // url 为 string 类型return 0;
}

(2)如果 exp 是函数调用,则 decltype(exp) 的类型就和函数返回值的类型一致

int& func1(int, char);   // 函数返回值为 int&
int&& func2(void);       // 函数返回值为 int&&
int func3(double);       // 函数返回值为 intconst int& func4(int, int, int);  // 函数返回值为 const int&
const int&& func5(void);          // 函数返回值为 const int&&int n = 50;
decltype(func1(100,'A')) a = n; // a 的类型为 int&
decltype(func2()) b = 0;        // b 的类型为 int&&
decltype(func3(10.5)) c = 0;    // c 的类型为 intdecltype(func4(1,2,3)) x = n;    // x 的类型为 const int&
decltype(func5()) y = 0;         // y 的类型为 const int&&

(3)如果 exp 是一个左值,或被括号()包围,decltype(exp) 的类型就是 exp 的引用,假设 exp 的类型为 T,则 decltype(exp) 的类型为 T&

class A 
{
public:int x;
}int main()
{const A obj;decltype(obj.x) a = 0;   // a 的类型为 intdecltype((obj.x)) b = a; // b 的类型为 int&int n = 0, m = 0;decltype(m + n) c = 0;     // n + m 得到一个右值,c 的类型为 intdecltype(n = n + m) d = c; // n = n + m 得到一个左值,d 的类型为 int &return 0;
}

(4)类的静态成员可以使用 auto, 对于类的非静态成员无法使用 auto,如果想推导类的非静态成员的类型,只能使用 decltype

template<typename T>
class A
{
private :decltype(T.begin()) m_it;public:void func(T& container){m_it = container.begin();}
};int main()
{const vector<int> v;A<const vector<int>> obj;obj.func(v);return 0;
}

(5)使用decltype推导参数类型

可以在函数模板、类模板和 lambda 表达式中使用 decltype,从而推断类型或者声明类型。下面给出的示例代码展示了如何在 lambda 表达式中使用 decltype,推导出参数类型

#include <iostream>int main()
{int x = 42;auto f = [&](decltype(x)& val) { val += 1; };f(x);std::cout << "x: " << x << std::endl;  // x: 43return 0;
}

在这个例子中,定义了一个 lambda 表达式 f,它的参数使用了 decltype 推断出参数类型为 int&。由于在 lambda 表达式中使用的变量必须是可见的,因此在 lambda 表达式前面的捕获列表中使用了 [&],以让 lambda 表达式捕获 x。最后,调用 lambda 表达式 f,并将变量 x 作为参数传递给它,从而使 x 的值被加 1。

http://www.dt0577.cn/news/10170.html

相关文章:

  • 免费微商城小程序模板郑州百度seo
  • wordpress教程破解优化网站排名茂名厂商
  • 北京广告公司标牌制作网站seo公司
  • 没有域名能做网站吗电商的运营模式有几种
  • wordpress pid连续seo分析报告怎么写
  • 深圳网站建设外包公司排名南宁百度seo排名优化
  • 食品饮料网站建设福州网站排名推广
  • 齐河做网站百度竞价排名又叫什么
  • 长沙建立企业网站网络服务费计入什么科目
  • 长沙官网网站建设抖音自动推广引流app
  • 第一推是谁做的网站电商代运营公司100强
  • 网站建设技网上接单平台
  • 微网站制作工具seo薪酬如何
  • 文艺主题wordpress百度怎么做关键词优化
  • 网站建设需要什么语言seo快排技术教程
  • 江西最新新闻事件今天aso优化方法
  • 帮公司做网站运营英雄联盟韩国
  • 任县网站建设网络公司小程序开发软件
  • 电子信箱注册网站百度站长平台怎么用
  • 网站建设公司如何推广网盟推广平台
  • 盱眙网站建设公司seo相关ppt
  • 嘉兴做网站优化多少钱快速建站哪个平台好
  • 电子书推送网站怎么做seo百度关键词排名
  • 推广型网站如何建站枫树seo
  • wordpress改变访问目录结构上海关键词优化报价
  • 找个可以直接观看的网站济南做seo的公司排名
  • wordpress 后台添加菜单众志seo
  • 邢台日报社官网大同优化推广
  • 网站建设 500强建站哪有免费的网站
  • 做壁纸的网站目前最新推广平台