ブースト::バリアントを使用している次の方法があります。type に基づいて値を取得しようとしますT
。失敗した場合boost::get<T>
、T が int または unsigned int の場合、特別な方法で処理したいと考えています。T
intかunsigned intかを知る方法はありますか?
この場合、テンプレートの特殊化は使用できないと思いますよね?
EDIT:また、私はまだ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);
}