1.如果括号里为一个变量 那么推断类型就为这个变量的类型(不会像auto移除const 引用等)
2.为表达式 那么如果表达式结果有固定地址 那么推断类型为这个变量的引用类型 如果表达式结果没有固定地址 那么推断类型为这个变量的类型
int a{ 21 };
int b = { 216 }
decltype(a)y{500};//y为int类型
decltype(a + b) x{ 200 };//x为int类型
decltype(a > b ? a : b) c{ a };//c为int&类型
decltype((a)) d{a};//d为int&类型
本文探讨了C++中decltype关键字的类型推断规则,包括当括号内为变量时推断为变量类型,表达式结果有固定地址时推断为引用类型,以及对复合表达式和引用类型的处理。通过示例展示了decltype如何在不同情况下确定变量的类型,如`decltype(a)`、`decltype(a+b)`和`decltype(a>b?a:b)`等。

3119

被折叠的 条评论
为什么被折叠?



