C++11(3泛型编程)——type_traits,变参函数模板

本文详细探讨了C++11中的type_traits库,包括基本的type_traits,如integral_constant、类型判断、类型关系判断及转换。此外,还介绍了如何使用conditional选择类型,result_of获取可调用对象的返回类型,以及enable_if对参数类型的限定。在可变参数模板部分,讲解了如何声明和展开可变参数模板函数和类,涉及递归、type_traits展开、逗号表达式和初始化列表等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

type_traits类型萃取

可以实现在编译器计算,查询,判断转换和选择
用于降低圈复杂度

基本的type_traits

1.简单的type_traits

将编译器常量包装为一个类型的type_traits----integral_constant
integral_constant中有一个常量成员变量value,可以通过integral_constant::value获取

template<typename Type>
struct Test : std::integral_constant<int, 2> {
	// 相当于
	// constexpr int value = 2;
};
int main()
{
	std::cout << Test<int>::value << endl;
}

2.类型判断的type_traits

常用的已定义的traits很多,都是由integral_constant派生而来的。
https://en.cppreference.com/w/cpp/types

  • 用来检查模板类型是否为某种类型
  • 通过std::is_XXX::value是否为true来判断模板类型是否为目标类型。
template<class T>
struct is_integral; // is_integral是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值