最近在阅读C++ Templates 2nd,发现有些很有意思的新特性,今天,借助本文,分享给大家。从一个例子入手首先,我们看如下例子:template typename T>class Add{ public: Add(T first, T second): first_{first}, second_{second} {} T result()const{return first + second;} private: T first_; T second_;};这个例子很简单,声明一个模板类Add,接收类型为T的构造函数Add,以及一个返回operator+结果的result()函数。在c++17之前,如果我们要使用Add类,往往必须像如下这么做:int main(){ Addint> ti(1,2); return 0;}即在实例化对象ot的时候必须指明类型int。自C++17起引入了新的特性Class Template Argument Deduction,简称为CTAD,即类模板参数推导,那么就可以像如下这样实例化ADD类:int main(){ Add ti(1,2); //T 被推导为int Add td{1.245, 3.1415}; //T 被推导为double Add
………………………………