#include <常用>
构 B{
空 f(){
打印("B");
}
};
构 C{
空 f(){
打印("C");
}
};
构 D{
空 g(){
打印("D");
}
};
构 E{
空 g(){
打印("E");
}
};
元<类 M,类 N>
构 A:公 M,公 N{
空 g(){
M::f();N::g();
}
};
元<整 I,整 J>静 极 为真(整 i,整 j){
打印(I,J,i,j);
中(I==i)&&(J==j);
}
元<元<类,类>类 G,类...T>构 M{
静 整 常 S=型长...(T);
元<类 U,类...O,整...J>
静 空 g(整 j,序列<J...>){
(((J==j)&&(G<U,O>().g(),0)),...);
}
元<类...O>静 空 f(整 i,整 j){
静 整 常 U=型长...(O);断定(i<S&&j<U);
f<O...>(i,j,转序<T...>());
}
元<类...O,整...I>
静 空 f(整 i,整 j,序列<I...>){
(((I==i)&&(g<T,O...>(j,转序<O...>()),0)),...);
}
};
空 主(){
M<A,B,C>::f<D,E>(1,0);
M<A,B,C>::f<D,E>(1,1);
M<A,B,C>::f<D,E>(0,1);
M<A,B,C>::f<D,E>(0,0);
}