프로그래밍/c++

boost::any에서의 unsafe_any_cast

제페 2016. 6. 6. 22:54
반응형

any_cast는 유도리가 없다. int로 넣은 것을 size_t로 읽으려고 하면 예외를 던진다. 실제 코딩을 함에 있어서도 

int => unsigned int 

size_t => int

같은 변환은 빈번한데, 안전한 캐스팅만을 보장해주는 any_cast가 야박하고 느꼈다면 unsafe_any_cast의 사용을 고려할 만 하다.


함수 시그니쳐


1
2
3
4
5
template < typename ValueType >
const ValueType* unsafe_any_cast(const boost::any* operand)
 
template < typename ValueType >
ValueType* unsafe_any_cast(boost::any* operand)
cs



사용


1
2
3
4
5
boost::any val = 1;
 
boost::any_cast<size_t>(val); // error!
 
boost::unsafe_any_cast<size_t>(&val); // ok
cs


반응형