看啥推荐读物
专栏名称: CPP开发者
伯乐在线旗下账号,「CPP开发者」专注分享 C/C++ 开发相关的技术文章和工具资源。
今天看啥  ›  专栏  ›  CPP开发者

【ModernCpp】新特性之CTAD

CPP开发者  · 公众号  ·  · 2023-12-20 08:27
最近在阅读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  ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照