refs #876 Utility to examine which members of value objects compare equal.

This commit is contained in:
Mathew Sutcliffe
2017-02-11 16:19:53 +00:00
parent 4fd9ecbe4d
commit b6f6e0f676
3 changed files with 82 additions and 0 deletions

View File

@@ -263,6 +263,12 @@ namespace BlackMisc
{
return getIntrospector<T>(Private::make_index_sequence<T::MetaClass::getMemberList().c_size>());
}
template <typename T>
static std::true_type hasMetaClass(int, typename T::MetaClass * = nullptr) { return {}; }
template <typename T>
static std::false_type hasMetaClass(...) { return {}; }
};
}
@@ -277,6 +283,13 @@ namespace BlackMisc
return Private::CMetaClassAccessor::getIntrospector<T>();
}
/*!
* Trait that is true if T has a metaclass.
* \ingroup MetaClass
*/
template <typename T>
struct THasMetaClass : public decltype(Private::CMetaClassAccessor::hasMetaClass<T>(0)) {};
} // namespace
#endif