学习AA大神c++设计新思维笔记:02工具
工具
局部类没啥用,静断,偏特化,都很普通了.
整2型可用于,分发,这样不同情况,用不同函数,因为是不同类型,所以用不同函数.如整2型<是多态>.现在可用如 常式来代替.多方法,双分派.型2型与整2型一样,用于函数分发.分开.
选择<真/假,T,U>,真则为T,假为U.可以选择<是多态,T*,T>.编译期判断可转换,可继承.现在可在类型特征里面,都有.如果某个类有接口,则不用动转.
型长(式)可直接返回大小,不用运行时,可感知重载,实例化,转换规则.型长可推导表达式类型,很强大.c++11等可以(推导(...)),类型无所谓,关键是大小不一样.型长不会求值.
元<类 T,类 U>类 转换{
用 小=符;
类 大{符 无[2];};
静 小 测试(U);//接收U,传回小,
静 大 测试(...);//函数最后的,最差了.任何其他对象
静 T 造();//如果调用了接受U的函数,则可转换,
公:
枚{存在=型长(测试(造()))==型长(小)};
//不同返回类型,用型长来区别.直接用T(),可能构造为私.
枚{双向存在=存在&&转换<U,T>::存在};
枚{相同=假};//偏特化中{相同=1};
};
显式构造函数不能用来转换.使用:转换<双精,整>::存在.借助他们判定是继承/是的基.
类型信息包装typeid.还有空型.都有了.有语法,无语义处.
特征,可根据编译期作判断
传值,可根据情况优化.如按引用/按值.当时无法判定是枚举.退化型.还有按位拷贝.
类型<列表>
编译期,无可变的东西.与lisp很像.都是不变的
部分模板偏特化,要小心.有的元<...>构 构名<...>,照样每个模板参数都有,要注意人家的定义方式.
型2型远看没用.就像那个I!...,主要是直接用T会构造T对象,而用型2型就是个空型.减小开销.
类型信息.无效类型与空类型
类 无效类型;
构 空类型{};
类型特征,c++最新里面都有了.
可以优化传参方式,如小颗粒用值,大按引用.去cv,c++现在叫退化型<>,POD结构,都可以按位复制,即使是递归的POD,可以根据POD,使用按位复制
浙公网安备 33010602011771号