我有两种类型,称为A
和B
。我想确保未来的开发人员不会以可比较的方式更改这些类型。
为此,我想添加一个单元测试和一个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) };
};
不幸的是我无法正确编译它。有什么建议吗?