C++ primer plus里面有讲到过加入泛型里面设了两个不同类型,这两个不同类型的参数在一个表达式中参与计算,那么表达式的结果到底应该是个什么类型呢,这个很难说。
为此C++11标准推出了一个关键字叫decltype。把它拆开来看一下就是declare
type的意思,就是声明一个类型。而它的用法是decltype(),括号里面的参数是表达式等。
例如:decltype(x)
y;这就是说y的类型是和x一样的。
并且,连修饰符也是一样的。值得一提的是这个表达式如果加上括号的话,那它代表一个左值,那么此时的y就是一个x类型的引用了。
不过,decltype关键字也不能完全解决问题,因为有的时候你希望直接返回一个表达式,因为函数会自动去计算这个表达式并把这个结果返回给主调函数,而且这么写比较方便。很显然这个时候你用不着decltype关键字,当然你这个应用场景也无法使用decltype关键字。
那该怎么办呢?那就引出下一个议题。