Fixed failing tests. refs #345

This commit is contained in:
Mathew Sutcliffe
2014-11-15 02:28:39 +00:00
parent ac9960d615
commit 8a3ba8bbed
5 changed files with 8 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ namespace BlackMisc
//! \private
template <> struct CValueObjectStdTuplePolicy<Aviation::CAltitude> : public CValueObjectStdTuplePolicy<>
{
using Equals = Policy::Equals::MetaTuple;
using Compare = Policy::Compare::MetaTuple;
using Hash = Policy::Hash::MetaTuple;
using DBus = Policy::DBus::MetaTuple;

View File

@@ -21,6 +21,7 @@ namespace BlackMisc
//! \private
template <> struct CValueObjectStdTuplePolicy<Aviation::CHeading> : public CValueObjectStdTuplePolicy<>
{
using Equals = Policy::Equals::MetaTuple;
using Compare = Policy::Compare::MetaTuple;
using Hash = Policy::Hash::MetaTuple;
using DBus = Policy::DBus::MetaTuple;

View File

@@ -20,8 +20,6 @@ namespace BlackMisc
//! \private
template <> struct CValueObjectStdTuplePolicy<Aviation::CComSystem> : public CValueObjectStdTuplePolicy<>
{
using MetaType = Policy::MetaType::Default;
using Equals = Policy::Equals::None;
using LessThan = Policy::LessThan::None;
using Compare = Policy::Compare::Own;
using Hash = Policy::Hash::Own;

View File

@@ -21,6 +21,7 @@ namespace BlackMisc
//! \private
template <> struct CValueObjectStdTuplePolicy<Aviation::CTrack> : public CValueObjectStdTuplePolicy<>
{
using Equals = Policy::Equals::MetaTuple;
using Compare = Policy::Compare::MetaTuple;
using Hash = Policy::Hash::MetaTuple;
using DBus = Policy::DBus::MetaTuple;

View File

@@ -86,10 +86,14 @@ namespace BlackMisc
struct Ops : private Private::EncapsulationBreaker
{
//! Equals operator
friend bool operator ==(const T &a, const T &b) { return Private::EncapsulationBreaker::toMetaTuple(a) == Private::EncapsulationBreaker::toMetaTuple(b); }
friend bool operator ==(const T &a, const T &b) { return Private::EncapsulationBreaker::toMetaTuple(a) == Private::EncapsulationBreaker::toMetaTuple(b) && baseEquals<typename T::base_type>(a, b); }
//! Not equals operator
friend bool operator !=(const T &a, const T &b) { return !(a == b); }
private:
template <class U> static bool baseEquals(const U &a, const U &b) { return a == b; }
template <class U> static bool baseEquals(const CValueObject &, const CValueObject &) { return true; }
};
};