다음과 같은 boost :: variant 메서드를 사용하고 있습니다. 나는 T
타입에 기초하여 값을 얻으려고 노력한다. boost::get<T>
이 실패하면 T가 int 또는 unsigned int 인 경우이를 특수한 방식으로 처리하려고합니다. T
이 int인지 unsigned int인지 알 수있는 방법이 있습니까?템플릿 값에서 유형 가져 오기, C++
이 경우 템플릿 전문화를 사용할 수 있다고 생각하지 않습니다.
편집 : 또한, 나는 아직 C++ (11)에 대한 액세스 권한이없는 (곧 희망)
template < typename T, typename C, void (C::*setterFcn)(const T&) >
void binder(const Variant& value_var, C* c)
{
const T* typeData = boost::get<T>(&value_var);
if (NULL == typeData)
{
// Need to check for int or unsigned int here somehow
}
(((C*) c)->*(setterFcn))(*typeData);
}
'std :: is_same :: value'과 (와) 비슷한가요? 아니면 int를 위해 모든 것을 전문화하십시오. –
부분 템플릿 전문화를 수행 할 수 있다고 생각하지 않습니다. –
@NicFoster : 아니요, 기능 템플릿을 부분적으로 특수화 할 수 없으므로 아니요. 그러나 _overload__를 사용하면이 작업을 쉽게 수행 할 수 있습니다. – ildjarn