2017-11-17 12 views
2

std::type_info을 형식 이름으로 가져 오는 방법이 있습니까? 예 :typename에서 type_info 가져 오기

std::type_info f(std::string name) { 
std::type_info info; 
... 
return info; 
} 

int main() { 
const std::string name = typeid(double).name(); 
std::type_info info = f(name); 
assert(info==typeid(double)); 
} 

f의 기능은 무엇입니까?

+1

나는 이것이 가능하지 않다고 생각하지만이 정보에 대해 역방향 조회를 수행하는 기능을 알지 못하는 이유가 무엇인지 확신 할 수없는 이유를 생각해 낼 수 없습니다 ... – Xirema

+0

@Xirema : 이름이 다른 유형에 대해 다른 것으로 보장되지 않으면 역방향 조회가 불가능합니다. –

+0

다른 곳에서 type_info를 사용하고 싶을지라도,'''std :: is_same'''''를 사용하는 것이 타입을 비교하는 훨씬 더 좋은 방법입니다. – mascoj

답변

7

documentation for std::type_info::name로 번호는 말한다 :

보장이 주어지지; 특히 반환 된 문자열은 여러 유형에 대해 동일한 일 수 있으며 동일한 프로그램의 호출간에 변경 될 수 있습니다.

정확한 사용 사례를 모르지만 대신 C++ 11 std::type_index을 활용할 수 있습니다.