C++ decltype关键字的用法
decltype 关键字是 C++11 标准新增的关键字,功能与 auto 关键字类似,也是在编译时期进行类型推导,但 decltype 的用法与 auto 不同。
decltype 关键字的使用格式如下所示:
需要注意的是,
decltype 关键字的用法示例代码如下所示:
在程序设计中,可以使用 decltype 关键字推导出的类型定义新变量,示例代码如下所示:
auto 作为函数返回值占位符,->decltype() 放在函数后面用于推导函数返回值类型。示例代码如下所示:
有了
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
decltype 关键字的使用格式如下所示:
decltype(表达式)
在上述格式中,decltype 关键字会根据表达式的结果推导出数据类型,但它并不会真正计算出表达式的值。需要注意的是,
decltype
关键字的参数表达式不能是具体的数据类型。decltype 关键字的用法示例代码如下所示:
int a; int b; float f; cout << typeid(decltype(a+b)).name() << endl; //推导结果:int cout << typeid(decltype(a+f)).name() << endl; //推导结果:float cout << typeid(decltype(int)).name() << endl; //错误,不能通过编译
在程序设计中,可以使用 decltype 关键字推导出的类型定义新变量,示例代码如下所示:
int a; int b; float f; decltype(a + b) x; //定义int类型变量x decltype(a + f) y; //定义float类型变量ydecltype 关键字最为强大的功能是在泛型编程中,与 auto 关键字结合使用推导函数返回值类型。
auto 作为函数返回值占位符,->decltype() 放在函数后面用于推导函数返回值类型。示例代码如下所示:
template<class T1, class T2> auto multiply(T1 x, T2 y)->decltype(x * y) { }在泛型编程中,这种方式称为追踪返回类型,也称尾推导。
有了
->decltype()
,程序设计者在编写代码时就无须关心任何时段的类型选择,编译器会进行合理的推导。声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。