C++有点神奇的λ.
#include <常用>
#define ID(x) []()常式{中 x;}
元<动...>构 A{};
元<类 T>用 TT=推导(求值<T>()());
//求值,加个右值引用后的类型.
//这里就是(t())后返回值的类型
常式 整 长呀(常 符*s){
中 s[0]==0?0:长呀(s+1)+1;
}
元<类 T>要求 是相同值<TT<T>,整>
常式 动 g(T t){中 A<t()>{};}
元<类 T,整...I>
常式 动 g0(T t,序列<I...>){
中 A<t()[I]...>{};
}
//重要的是类型.
元<类 T>要求 是相同值<TT<T>,常 符*>
常式 动 g(T t){中 g0(t,转序<长呀(t())>());}
//主要是利用推导出来的类型.
元<类 K,类 V>构 M{
元<类>静 V&取呀(){//用的是`静态变量<类>`
静 V v;中 v;
}//其中f()可转换为K类型.
元<类 F>静 V&取(F f){
中 取呀<推导(g(f))>();
}//每一个的类型不一样.
};
用 T=M<串,整>;
空 f(){
打印(T::取(ID("acd")));
打印(T::取(ID("abc")));
}
空 主(){
T::取(ID("abc"))=20;
T::取(ID("acd"))=10;
f();
}
浙公网安备 33010602011771号