c++令人崩溃的模板.

// 别名=>干净.
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);
}
//找半天的错误.
//原来造序没写对.
//造序,要继承的是自己造序<...>
posted @   zjh6  阅读(13)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示