检查两种类型无法比较相等

时间:2015-03-24 14:06:20

标签: c++ templates template-meta-programming

我有两种类型,称为AB。我想确保未来的开发人员不会以可比较的方式更改这些类型。

为此,我想添加一个单元测试和一个static_assert来确保这个属性。我在c ++ 03,我尝试了各种模板技巧,如下所示。

template <class Left, class Right>
struct can_compare_equal {
   typedef char True;
   typedef long False;

   template <class U>
   static U GetT() { Left* l; Right* r; return *r == *l; }

   template <class U> static True test(typeof(&can_compare_equal<Left,Right>::GetT<U>));
   template <class U> static False test(...);

   enum { value = sizeof(test<True>(0)) == sizeof(char) };
};

不幸的是我无法正确编译它。有什么建议吗?

0 个答案:

没有答案