2014-07-15 1 views
4

내가 가장 효과적인 방법으로 질문을 말했는지 확신 할 수는 없지만 C++ 11을 사용하기 시작했으며 새로운 기능을 현재 문제에 적용하는 데 어려움을 겪고 있습니다.C++ 11 매개 변수 팩에서 형식을 얻는 방법?

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

내가 매개 변수 팩 Args의 종류 각각에 대한 type_index 값을 포함하는 vector을 반환 foo() 싶습니다 : 나는 다음과 같은 개념적인 기능을 가지고있다. 예를 들어, foo<int, vector<int>, double>(){ type_index(typeid(int)), type_index(typeid(vector<int>)), type_index(typeid(double)) }을 포함하는 vector을 반환합니다.

개념 상, 내가 type_index(typeid(T))를 반환 팩의 유형을 반복하고, 위의 예 유형 T 주어진 (이들 각각에 변환 호출하고 싶습니다. 내가 느끼는 을이 작업을 수행 할 수있는 깨끗한 방법이 있어야한다처럼, 이 작업을하기 위해 variadic 템플릿 기계를 작동하는 방법이 명확하지 않습니다. 내 직감이 맞습니까?

답변

5

팩의 유형을 "반복"하는 가장 간단한 방법은 팩 확장을 사용하여 원하는 패턴을 반복하는 것입니다. 이 경우 다음과 같이 작성하십시오.

return { type_index(typeid(Args))... } 
+0

우수 ! 나는 그것이 단순 할 것임을 깨닫지 못했다. 감사! –

관련 문제