type
status
date
slug
summary
tags
category
icon
password
Property
C++11
引入了decltype
类型说明,其作用是选择并返回操作数的数据类型,编译器将对表达式进行分析得出结果的类型但不会真正求值:decltype
处理顶层const
和引用的方式与auto
有些不同,如果decltype
使用的表达式是一个变量,则decltype
返回该变量的类型(包括顶层const
和引用)。只有在decltype
表达式中引用不被当做其绑定的对象的别名。如果
decltype
使用的表达式不是一个变量,则decltype
返回表达式结果对应的类型。如果表达式的内容是解引用操作,则decltype
将得到引用类型。decltype
和 auto
的另一处重要区别是,decltype
的结果类型与表达式形式密切相关。注意:如果 decltype
使用的是一个不加括号的变量,则得到的结果就是该变量的类型;如果给变量加上了一层或多层括号,则 decltype
会得到引用类型,因为变量是一种可以作为赋值语句左值的特殊表达式。为了得到变量的引用类型有一种简单的方式就是
decltype((variable))
,在变量名外加上括号就成为一个返回变量的表达式,并且求值结果是左值。因而,decltype
返回的是引用。decltype(variable)
仅当变量本身是引用时才会返回引用类型。