C++11是如何解决泛型中的隐式转换的?

C++ primer plus里面有讲到过加入泛型里面设了两个不同类型,这两个不同类型的参数在一个表达式中参与计算,那么表达式的结果到底应该是个什么类型呢,这个很难说。

为此C++11标准推出了一个关键字叫decltype。把它拆开来看一下就是declare

type的意思,就是声明一个类型。而它的用法是decltype(),括号里面的参数是表达式等。

例如:decltype(x)

y;这就是说y的类型是和x一样的。

并且,连修饰符也是一样的。值得一提的是这个表达式如果加上括号的话,那它代表一个左值,那么此时的y就是一个x类型的引用了。

不过,decltype关键字也不能完全解决问题,因为有的时候你希望直接返回一个表达式,因为函数会自动去计算这个表达式并把这个结果返回给主调函数,而且这么写比较方便。很显然这个时候你用不着decltype关键字,当然你这个应用场景也无法使用decltype关键字。

那该怎么办呢?那就引出下一个议题。

你可能感兴趣的:(C++11是如何解决泛型中的隐式转换的?)