c++令人崩溃的模板.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fqbqrr/article/details/102710681
// 别名=>干净.
template<class T> using Invoke = typename T::type;
template<unsigned...> struct seq{ using type = seq; };//必须要有类型.
template<class S1, class S2> struct concat;//连接
template<unsigned... I1, unsigned... I2>
struct concat<seq<I1...>, seq<I2...>>
  : seq<I1..., (sizeof...(I1)+I2)...>{};//这是合并序列的方式.
template<class S1, class S2>
using Concat = Invoke<concat<S1, S2>>;//调用
template<unsigned N> struct gen_seq;
template<unsigned N> using GenSeq = Invoke<gen_seq<N>>;//麻烦不?
template<unsigned N>
struct gen_seq : Concat<GenSeq<N/2>, GenSeq<N - N/2>>{};//麻烦不?
template<> struct gen_seq<0> : seq<>{};
template<> struct gen_seq<1> : seq<0>{};<类 A,类 B>构 序并;<...A,...B>构 序并<序列<A...>,序列<B...>>:
序列<A...,B...>{};//观察如何实现的,但这里(序列::型)
//这样搞的序列<a,b,c>里面得有{用 型=序列;}
空 测试3(){
    用 e=序列<2,3,6>;
    用 g=序列<2,3,6>;
    用 h=序并<e,g>::;//没有型,那是不行的,会直接生成序并<序列<>..>
    类型啊<h>();//
}
//旋转打印:<整 N,整 M,型名 T,...O>
空 测试(序列<O...>&x,T&t){
    打印(<(O+M)%N>(t)...);//(n+m)%n,O为变量
}<整 N,整 M,型名 T>
空 测试2(T&t){
    造序<N>::型 p;测试<N,M>(p,t);
}
//找半天的错误.
//原来造序没写对.
//造序,要继承的是自己造序<...>

猜你喜欢

转载自blog.csdn.net/fqbqrr/article/details/102710681