Files
MeanField_SERiF/src/include/serif/utils/misc/concepts/enumeration.hpp

18 lines
664 B
C++
Raw Normal View History

#pragma once
#include "serif/utils/misc/concepts/concat.hpp"
#include "serif/utils/types/type_list.hpp"
namespace serif::utils::misc::concepts {
// Might make sense to rename these to FlatMap or some such
template <typename TypeList, template <typename> typename Descriptor>
struct EnumerateTypes;
template <template <typename> typename Descriptor, typename... TypeTs>
struct EnumerateTypes<types::TypeList<TypeTs...>, Descriptor> {
using Type = ConcatT<Descriptor<TypeTs>...>;
};
template <typename TypeList, template <typename> typename Descriptor>
using EnumerateTypesT = EnumerateTypes<TypeList, Descriptor>::Type;
}