我有以下使用 boost::variant 的方法。我尝试根据类型 T
获取值.如果boost::get<T>
如果 T 是 int 或 unsigned int,我想以特殊方式处理它。有什么办法可以知道 T
是 int 还是 unsigned int?
我不认为在这种情况下我可以使用模板特化,可以吗?
编辑:此外,我还没有访问 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);
}
最佳答案
在 C++11 中你可以使用 std::is_same
在 C++03 中你可以这样做:
template <typename T1, typename T2>
class is_same
{
public:
static bool const value = false;
};
template <typename T>
class is_same<T, T>
{
public:
static bool const value = true;
};
并完全按照 C++11 标准版本使用它。
关于c++ - 从模板值获取类型,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808745/