#include <常用>
< A, D> 引序( i){//K为容器类型
I=0;(i>I)I=i; I++;
}//设置引用的序号.避免重复.A为类型
//通过不同的<A,D>造不同的引序.
//A为类型,D为本引用位置区间.通过A,D来区分静
< B, I, D>B&造引(){//多加一个
t=引序<B,D>(I);断定(I>=t); B a; a;
}//先类后类型//如何使I不能相同呢?
< A, B, I, D>&映引(){
造引<无序映<A,B>,I,D>();
}//主要是为了方便取名字.不用可恶的`->`
< A, I, D>&量引(){
造引<向量<A>,I,D>();
}
< A, I, D>&集引(){
造引<无序集<A>,I,D>();
}//D用来表示本引用放置位置
//方便造引用.
T=无序集<>;
B{//这样只能造一个引用.
//如何限制为`B`类局部呢
T&=集引<,0,B>(),&=集引<,1,B>();
&=造引<,0,B>(),&=造引<,1,B>();
//T&列=语;
:
切换(T&a,T&b){
=a;=b;
打印大小(,);
打印();
打印();
}
切换(&a,&b){
=a;=b;
打印大小(,);
打印();
打印();
}
};

E{//这样只能造一个引用.
//如何限制为`B`类局部呢
T&=集引<,0,E>(),&=集引<,1,E>();
&=造引<,0,E>(),&=造引<,1,E>();
};
D{
s;
};
//差别是4/12,4/32的区别.
(){
T c{"啊"},d{"啊","呀"};
B b;b.切换(c,d);
打印("---");
b.切换(d,c);
m{"只只只"},n{"呀只"};
打印("---");
b.切换(m,n);
打印("---");
E e;
打印(型长(B),型长(E),型长(D));
}