我有我使用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:不,因爲不能部分地專門化一個函數模板。但是,您可以使用_overloading_輕鬆完成此操作。 – ildjarn