前置课程
c++模板元编程TypeList定义及基本操作
#include "def.h" templatetypename metaFunc, typename Init, bool = IsEmpty_v > struct Accumulate_; template
typename metaFunc, typename Init> struct Accumulate_ { using type = Init; }; template
typename metaFunc, typename Init> struct Accumulate_ : public Accumulate_< PopFront_t
, metaFunc, typename metaFunc
>::type> {}; template typename metaFunc, typename Init> using Accumulate_t = typename Accumulate_ ::type; // 实践一 // 实现逆序 reverse template
> struct Reverse_Acc_ { using type = Accumulate_t ; }; template > using Reverse_Acc_t = typename Reverse_Acc_ ::type; // 实践二 最大的类型 // 辅助类 template struct Identity { using type = T; }; template struct BiggerType_ { // Identity减少分支实例 using type = typename conditional_t =sizeof(Current), Identity , Identity >::type; }; template using BiggerType_t = typename BiggerType_ ::type; template struct BiggestType_{ using type = Accumulate_t ; }; template using BiggestType_t = typename BiggestType_ ::type; struct Big { char buffer[1024]; }; int main() { // 逆序测试 using SL = TypeList; using Reverse_SL = Reverse_Acc_t ; cout << boost::typeindex::type_id_with_cvr ().pretty_name()<< endl; // 最大类型测试 using Biggest_SL = BiggestType_t ; cout << boost::typeindex::type_id_with_cvr ().pretty_name()<< endl; }



