У меня есть следующий список типов:
using ComponentList = brigand::list<TransformComponent, ObjectComponent, BodyComponent>
Как я могу преобразовать предыдущий список в новый список, который будет выглядеть так:
using ComponentHandleList = brigand::list<entityx::ComponentHandle<TransformComponent>, entityx::ComponentHandle<ObjectComponent>, entityx::ComponentHandle<BodyComponent>>;
Я в основном хочусоздать новый список, который имеет оболочки для каждого элемента в предыдущем списке.Я попытался сделать это с помощью:
using ComponentHandleList = brigand::transform<ComponentList, AddComponentHandle<brigand::_1>>;
Но я мало что знаю о метапрограммировании и не смог реализовать struct AddComponentHandle<>
, который бы принял тип T
и преобразовал бы его в entityx::ComponentHandle<T>
.Разбойник включает соответствующую документацию о преобразовании списка типов, показывая пример преобразования каждого типа T
в T*
с помощью std::add_pointer<>
.Это то же самое, что я хочу сделать, но перейти от T
к entityx::ComponentHandle<T>
.Как я могу преобразовать первый список, чтобы он выглядел как второй?