gpt4 book ai didi

c++ - 为什么decltype((i))是引用类型,而decltype(i+0)是int类型?

转载 作者:太空狗 更新时间:2023-10-29 21:35:19 25 4
gpt4 key购买 nike

我正在学习C++ Primer fifth edition,示例代码让我很困惑。它类似于下面的代码:

int i,&k=i;
decltype((i)) t; //error: t must be initialized
decltype(k+0) s = 45; //OK,s is int type

为什么两个都是表达式,第一个是引用类型,第二个是int类型?

最佳答案

decltype((i));

将产生一个引用类型,因为 i 是一个左值。这对于确定 value category 很有用。的任何表达。转载形式cppreference , 对于带括号的表达式(强调我的):

a. if the value category of expression is xvalue, then decltype yields T&&;

b. if the value category of expression is lvalue, then decltype yields T&;

c. if the value category of expression is prvalue, then decltype yields T.


decltype(k+0)

将产生 k+0 表达式求值结果的类型。正如 auto val = k + 0; 会推导出 val

关于c++ - 为什么decltype((i))是引用类型,而decltype(i+0)是int类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42860379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com