天天看點

運作時轉編譯時應用.多個類型統一調用.擷取變量前的類型

元<類 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給出類型,主要就是這個<下>
}//