Mirror reflection library 0.5.13
|
00001 00011 #ifndef MIRROR_META_PROG_IS_ONE_OF_1102211340_HPP 00012 #define MIRROR_META_PROG_IS_ONE_OF_1102211340_HPP 00013 00014 #include <mirror/meta_prog/forward_decl.hpp> 00015 #include <mirror/meta_prog/range.hpp> 00016 #include <mirror/meta_prog/is_a.hpp> 00017 #include <mirror/meta_prog/or.hpp> 00018 00019 MIRROR_NAMESPACE_BEGIN 00020 namespace mp { 00021 00022 #ifdef MIRROR_DOCUMENTATION_ONLY 00023 00024 00030 template <class MetaObject, class Concepts> 00031 struct is_one_of 00032 { 00034 typedef BooleanConstant type; 00035 }; 00036 #else 00037 00038 template <class X, class ... Concept> 00039 struct is_one_of<X, range<Concept ...> > 00040 : or_<typename is_a< X, Concept >::type ...>::type 00041 { }; 00042 #endif 00043 00044 } // namespace mp 00045 MIRROR_NAMESPACE_END 00046 00047 #endif //include guard 00048