C++ Type Trait

本文介绍了C++中的Type Trait,它是一种处理类型属性的模板,可以在编译时根据模板参数产生类型或值。文章讨论了如何使用Type Trait进行整数类型的弹性重载,处理共通类型,以及深入探讨了Type Trait的相关工具和类型关系检验。
摘要由CSDN通过智能技术生成

所谓Type trait提供一种用来处理type属性的办法。它是一个模板,可在编译器根据一或多个模板实参产出一个type或value

示例如下:
在这里插入图片描述

针对整数类型的弹性重载

假设有一个函数foo(),对于整数类型和浮点数类型的实参,它该有不同的实现。通常的做法是将它重载,使它拥有针对整数类型和针对浮点数类型两个版本:

void foo(short);
void foo(int);
void foo(float);
void foo(double);
void foo(long double);
...

这样的重复工作不仅令人厌烦,还带来一个问题:只要面对新类型或用户自定义的类型,它就束手无策了
有了type trait,你可以这样写:

template<typename T>
void foo_impl(T val, true_type);
template<typename T>
void foo_impl(T val, false_type);
template<typename T>
void foo(T val)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值