boost::any
을 범용 형식으로 사용하여 컨테이너에 저장하고 다른 기능으로 전달할 수 있습니다. 하지만이 함수 안에서는 항상 실제 유형을 알고 있으므로 런타임에 어떤 유형 안전 검사와 부과 된 오버 헤드가 필요하지 않습니다. static_cast
이면 충분합니다.boost_any를 사용하는 동안 오버 헤드를 피할 수 있습니까?
이상적인 솔루션은 boost::polymorphic_downcast
과 같은 것을 사용하는 것이지만이 경우에는 적용 할 수 없다는 것을 알 수 있습니다.
void*
에 대한 자체 래퍼를 작성해야합니까, 아니면 다른 옵션이 있습니까?
어쨌든 컴파일 타임에 유형을 알고 있다면 왜 'boost :: any'가 필요한가요? 컨테이너에 넣어야하는 모든 유형을 포함하는 구조체를 사용할 수 없습니까? –
@TonyTheLion : 메모리가 비효율적일까요? –
'any'가 올바른 타입이고 실제로 타입을 알고 있다면 void 포인터의 컨테이너를 만들 수 있습니다. –