2013-03-11 206 views
2

我有一個模板結構之間的比較:模板類型推演:不同的模板類型

template <typename T, typename T2> 
struct MyStruct {}; 

,我想,以確定是否某些類型是「MYSTRUCT」(我不在乎模板參數是什麼) 。

template <typename OtherType, typename TestingType, typename = std::enable_if< IsMyStruct<TestingType>::value, TestingType>::type > 
struct OtherStruct {}; 

我如何寫IsMyStruct

回答

4

你可以這樣說:

#include <type_traits> 

template <typename T> 
struct IsMyStruct : std::false_type { }; 

template <typename T1,typename T2> 
struct IsMyStruct<MyStruct<T1,T2> > : std::true_type { }; 
+1

正常成語分別是從'的std :: false_type'和'的std :: true_type'繼承,就像一個旁註。 – Xeo 2013-03-11 08:25:44

+0

@Xeo:謝謝。 – 2013-03-11 14:04:52