Как получить типы в пакете параметров C ++ 11?

Я не уверен, что сформулировал вопрос наиболее эффективным способом, но я только сейчас начинаю использовать C ++ 11 и испытываю трудности с применением его новых функций к рассматриваемой проблеме. У меня есть следующая условная функция:

template <typename ... Args>
std::vector<std::type_index> foo()

мне бы хотелось foo() вернуть vector который содержит type_index значение для каждого из типов в пакете параметров Args, Например, foo<int, vector<int>, double>() вернет vector содержащий { type_index(typeid(int)), type_index(typeid(vector<int>)), type_index(typeid(double)) },

В принципе, я хотел бы перебрать типы в пакете и вызвать вышеупомянутое преобразование для каждого из них (то есть, учитывая тип T, вернуть type_index(typeid(T)),
Я чувствую, что должен быть чистый способ сделать это, но мне не ясно, как управлять механизмом вариабельных шаблонов, чтобы сделать эту работу. Правильна ли моя интуиция?

4

Решение

Самый простой способ «перебрать» типы в пакете — использовать расширение пакета, чтобы повторить нужный шаблон. В этом случае вы бы написали что-то вроде следующего:

return { type_index(typeid(Args))... }
5

Другие решения


По вопросам рекламы [email protected]