元<整 M,整...I>常式 动 连序(序列<I...>){
中 序列<M,I...>();
}
元<整 F>构 为0:假型{};
元<>构 为0<0>:真型{};
元<型名 T>构 只3:假型{};
元<>构 只3<整>:真型{};
元<>构 只3<极>:真型{};
元<>构 只3<浮>:真型{};
元<元<整>类 G,整 F,整...I>常式 动 去(序列<F,I...>){
如 常式(型长...(I)==0){
如 常式(G<F>::值)中 序列<>{};
异 中 序列<F>{};
}异{
序列<I...>t;
如 常式(G<F>::值)中 去<G>(t);
异 中 连序<F>(去<G>(t));
}
}
元<型名 F,型名...I>构 在中:假型{};
元<型名 F,型名...I>构 在中<F,I...>:元或<是相同<F,I>...>{};
元<型名 T>用 在呀=在中<T,极,整,浮,串>;
元<元<型名 B>类 G,整 M,型名 F,型名...I>
常式 动 去(){
如 常式(型长...(I)==0){
如 常式(G<F>::值)中 序列<>{};
异 中 序列<M>{};
}异{
如 常式(G<F>::值)中 去<G,M+1,I...>();
异 中 连序<M>(去<G,M+1,I...>());
}
}
下面是测试代码:
```cpp
构 啊{};
空 主(){
序列<1,0,0,3,4>m;
动 o=去<为0>(m);
动 t=去<在呀,0,极,整,浮,串,啊,串>();
打印序列(o);
打印序列(t);
}