1. 程式人生 > >利用模板實現IfThenElse,選擇引數型別

利用模板實現IfThenElse,選擇引數型別

在模板開發中,有時需要根據實際選擇函式返回值的型別,特別是在型別需要提升的情況下。

下面提供從兩個引數型別中選擇其中一個型別的模板類,採用了基本模板和區域性特化技術實現。其實現如下:

//base template
template<bool C, typename T1, typename T2>
struct IfThenElse;

//local specialization template
template<typename T1, typename T2>
struct IfThenElse<true, T1, T2>
{
	typedef T1 ResultT;
};

//local specialization template
template<typename T1, typename T2>
struct IfThenElse<false, T1, T2>
{
	typedef T2 ResultT;
};