Я не уверен, что сформулировал вопрос наиболее эффективным способом, но я только сейчас начинаю использовать 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))
,
Я чувствую, что должен быть чистый способ сделать это, но мне не ясно, как управлять механизмом вариабельных шаблонов, чтобы сделать эту работу. Правильна ли моя интуиция?
Самый простой способ «перебрать» типы в пакете — использовать расширение пакета, чтобы повторить нужный шаблон. В этом случае вы бы написали что-то вроде следующего:
return { type_index(typeid(Args))... }