#pragma once
#include <string>
#include <variant>
class Entity;
struct Void {};
template <typename ...> struct concat;
template <template <typename ...> class List, typename T>
struct concat<List<Void>, T>
{
typedef List<T> type;
};
template <template <typename ...> class List, typename ...Types, typename T>
struct concat<List<Types...>, T>
{
typedef List<Types..., T> type;
};
typedef std::variant<Void> TypelistVoid;
#define TYPE_LIST TypelistVoid
struct Component
{
Component( std::string aName ) : mName( aName ) {}