C++类型支持之std::decltype

本文详细介绍了C++中的std::decltype关键字,用于在编译期推导表达式的类型,不涉及实际求值。讨论了标识符表达式、类成员表达式以及其他形式表达式(如运算符、函数调用、括号表达式)的推导规则,并举例说明。同时,提到了括号表达式对推导结果的影响以及函数调用时返回类型的变化。
摘要由CSDN通过智能技术生成

前言

std::decltype主要用于推导输入表达式的类型,注意该推导过程在编译期完成,并不会真正对表达式求值。
推导规则如下:

  • 如果输入为标识符表达式类成员表达式,则推导类型即为标识符或类成员的类型
  • 如果输入为类型为T的其他形式表达式:
    • 如果表达式的值为左值,则推导结果为 T&
    • 如果表达式的值为纯右值,则推导结果为 T
    • 如果表达式的值为将亡值,则推导结果为 T&&
  • 如果输入的变量类型包含在括号内,则认为类型为左值,结果为T&

标识符表达式与类成员表达式

class A
{
   
public:
    char mem = 0;
    void func(char) {
   }
    static void staticFunc(int) {
   }
};

A a;
int x = 0;
const int y = 0;
volatile const int z = 0;
int & xx = x;
int && xxx = 0;

decltype(x) x1;                         // int
decltype(y) y1 = 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值