<<...>类 G,...I>构 基序列{<整 F,...B>
    静 常式 动 应用(序列<F,B...>&){
        如 常式(型长...(B)==0)
            中 G<F,I...>::动作(序列<>());
        异 中 G<F,I...>::动作(应用(序列<B...>()));
    }//不要用`符号()`,有歧义,它以为你在转对象.
};<整 M>构 逆序3{//像下面这样包装.<...I>静 常式 动 动作(序列<I...>){
        如 常式(型长...(I)==0)中 序列<M>();
        异 中 序列<I...,M>();
    }//都要实现动作.
};//逆序一个,注意,如下面的异,不能少写.

这样做的原因,是因为C++不支持函数模板作为模板参数.

这里是原来的可恶的宏的样儿