c++ - 从模板值获取类型,C++

标签 c++ templates boost boost-variant

我有以下使用 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/

相关文章:

c++ - 为 MinGW boost 二进制文件

c++ - 将 String^ 转换为 std::string(基本字符串)-> 错误。我怎样才能解决这个问题?

c++ - gmock TypedEq 相同的字符串不同的地址

c++ - 将指针类型作为模板参数传递

c++ - 派生自另一个类模板类型推导的类模板

c++ - 函数模板重载(不同的返回值类型)

c++ - 如何避免在 BFS 中进一步搜索顶点的邻居?我正在使用 Boost 图形库

c++ - 如何 "hide"头文件里面的一个变量?

c++ - 高级CFontDialog

c++ - 使用Boost ASIO处理无套接字的TCP