From: Mikko Rasa Date: Fri, 24 May 2019 17:04:36 +0000 (+0300) Subject: Move NeedsCollection into its own header and adjust for new Sfinae struct X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=41e78ee91ca058ead90fa1c8ee4339d2ef1b0f31;p=libs%2Fdatafile.git Move NeedsCollection into its own header and adjust for new Sfinae struct --- diff --git a/source/collection.h b/source/collection.h index 89e801f..34b1260 100644 --- a/source/collection.h +++ b/source/collection.h @@ -2,10 +2,10 @@ #define MSP_DATAFILE_COLLECTION_H_ #include -#include #include #include "collectionsource.h" #include "loader.h" +#include "meta.h" /* XXX This file is a big mess with too many things in it. However, the dependencies between those things make it difficult to split up. */ @@ -13,20 +13,6 @@ dependencies between those things make it difficult to split up. */ namespace Msp { namespace DataFile { -/** -Helper struct to determine whether a Loader has a Collection typedef. -*/ -template -struct NeedsCollection: public Sfinae -{ - template - static Yes f(typename U::Collection *); - template - static No f(...); - - enum { value = Evaluate(0))>::value }; -}; - class CollectionItemTypeBase; template diff --git a/source/meta.h b/source/meta.h new file mode 100644 index 0000000..ac6ec1b --- /dev/null +++ b/source/meta.h @@ -0,0 +1,24 @@ +#ifndef MSP_DATAFILE_META_H_ +#define MSP_DATAFILE_META_H_ + +#include + +namespace Msp { +namespace DataFile { + +/** +Helper struct to determine whether a Loader has a Collection typedef. +*/ +struct CheckCollectionType: Sfinae +{ + template + static Yes f(typename T::Collection *); + using Sfinae::f; +}; + +template struct NeedsCollection: Sfinae::Evaluate { }; + +} // namespace DataFile +} // namespace Msp + +#endif