// 别名=>干净.
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);
}
//找半天的错误.
//原来造序没写对.
//造序,要继承的是自己造序<...>
c++令人崩溃的模板.
原创
©著作权归作者所有:来自51CTO博客作者fqbqrr的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:windows中文与utf8
下一篇:微软的最近使用项目就是个垃圾啊.
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C++ 模板匹配matchTemplate
C++ 模板匹配matchTemplate
opencv 模版匹配 -
C++ 程序崩溃
程序崩溃主要是 内存访问越界,缓冲区溢出,堆栈溢出,空指针,内存泄漏,参数
空指针 内存泄漏 缓冲区溢出 -
C++ | C++模板
C++ | C++模板模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型
c++ Stack #include 数据类型 -
C++模板
1. 名词概念模板类,模板函数,特化模板(template specialization)2. 注
c++ 2010 模板函数 参考文献 头文件 -
C++ 模板之类模板
使用类模板,可以事先不确定成员变量的类型,假如我们要写一个先进后出的栈,这个栈既可以
Stack 数组 成员变量