型别选择
型别到型别的转换目的是为了在编译期决定调用哪一部分的代码,型别选择则是以在编译期决定使用何种型别为目的。
Select.h
//在泛化版本中,以Then型别作为nested type template<bool If, class Then, class Else> struct Select { typedef Then Result; }; //在特化版本中(false),以Else型别作为nested type template<class Then, class Else> struct Select<false, Then, Else> { typedef Else Result; };
Select.cpp
#include <iostream> using namespace std; #include "Select.h" int main() { Select<true, int, double>::Result i1 = 1.1; Select<false, int, double>::Result i2 = 1.1; cout << "i1 = " << i1 << "\n" << "i2 = " << i2 << endl; }