2013-03-11 120 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