模板学习笔记
文章平均质量分 58
深入了解模板
小虫v
这个作者很懒,什么都没留下…
展开
-
万能引用universal reference
万能引用学习笔记原创 2021-12-03 12:21:06 · 305 阅读 · 0 评论 -
void_t
void_t源码分析和常规范例功能:能够检测到应用SFINZE(替换失败并不是一个错误)特性出现的非类类型,换句话来说,给进来的类型必须是一个有效类型判断类中是否有类型别名namespace nmsp1{ struct NoInnerType { int m_i; }; struct HaveInnerType { using type = int; //类型别名 void myfunc(){}原创 2021-12-07 22:28:38 · 621 阅读 · 1 评论 -
true_type与false_type
std::true_type和std::false_type实际上是类型别名是两个类型(类模板)注意区分true_type与false_type与true和false区别true_type,false_type代表类型true,false代表值nmsp1::FalseType myfunc1();//返回假这种含义nmsp1::TrueType myfunc2();//返回真这种含义自己模拟实现namespace nmsp1 { template<boo原创 2021-12-07 22:21:15 · 737 阅读 · 0 评论 -
declval
标准库的典型内容介绍C++标准库典型且常用的函数模板、类模板、别名模板等功能组件以及它们的实现细节std::declval基本概念和常规实例std::decval–C++新标准中出现的函数模板,没有函数体(只有声明、没有实现),无法调用,一般用于与decltype,sizeof等关键字配合来进行类型推导、占用内存空间计算等查看源码add_rvalue_reference:是C++标准库中的类模板,他的能力是给进一个类型,它能够返回该类型的右值引用类型。给进一个int类型,原创 2021-12-07 22:20:47 · 1531 阅读 · 0 评论 -
类模板可变参的逐步展开
类模板可变参的逐步展开myclasst<Args…>继承namespace nmsp1 { template<typename... Args> class myclasst { public: myclasst() { cout << "myclasst::myclasst()执行了,可变参数个数= " <<sizeof...(Args)<< endl;原创 2021-12-06 14:41:22 · 501 阅读 · 2 评论 -
enable_if
学习笔记原创 2021-12-06 14:40:56 · 2850 阅读 · 0 评论 -
如何查看类型推断3
auto类型推断auto类型常规推断:用于变量的自动类型推断。声明变量的时候初始化的类型自动为此选择匹配的类型,不需要程序员显示的指定类型auto的特点:auto的自动类型推断发生在编译期间auto定义变量必须立即初始化,这样编译器才能推断出它的实际类型,编译器才能确定auto类型以及整个变量的类型然后再编译期间才可以用真正的类型替换掉auto这个类型占位符auto的使用比较灵活,可以和指针、引用、const等限定符结合使用auto推断出来会代表一个具体的类型,au原创 2021-12-03 12:22:51 · 282 阅读 · 2 评论 -
如何查看类型推断2
万能引用类型从上一章如何查看类型推断中,我们发现经过模板的类型推导,T的类型是不完整的,我们想得到完全的类型template<typename T>void myfunc(T&& tmprv) { cout << "-----------------begin------------------" << endl; using boost::typeindex::type_id_with_cvr; cout <<原创 2021-12-03 12:22:18 · 442 阅读 · 0 评论 -
如何查看类型推断结果
类型推断笔记原创 2021-12-03 12:21:41 · 565 阅读 · 3 评论