元<类 F,整...I>
常式 动 切换啊(整 n,F&&f,序列<I...>){
((n==I&&(f(整常<整,I>()),0)),...);
//&&与(..,0)这样就是a&&b,
//b为0的表达式,所以必须要有0,这里反正能用就行
}
元<整 I,类 F>常式 动 切为编(整 n,F&f){
型名 造序<I>::型 p;中 切换啊(n,f,p);
};
示例:
#include <变量>
#include "运转编.cpp"
构 啊{
极 要(){
中 真;
}
整 打(){
打印("啊");
中 3;
}
};
构 呀{
极 要(){
中 假;
}
整 打(){
打印("呀");
中 4;
}
};
用 T=变量<啊,呀>;
//用可变模板是不行的
//主要是,一个下,与一个中,麻烦.
空 主(){//向量是同一类型的,元组是不同类型的
啊 a;呀 b;向量<T>过{a,b};整 i=0;极 要下=0;
常式 整 I=变量大小值<T>;
对(动&t:过){//i与过的顺序要匹配
切为编<I>(i,[&](动 i){//f取上下文
常式 整 N=推导(i)::值;静 动 g=取<N>(t);
如(!g.要()){要下=1;中;}
g.打();
});
i++;如(要下)下;异 断;
}//只要一个.i给出类型,主要就是这个<下>
}//
这里最关键就是这个要下,想半天都搞不出来