C ++有没有办法让type_traits基于模板重载?

时间:2017-01-22 20:02:14

标签: c++ templates

是否可以根据type_traits信息重载函数/类模板?

示例:

#include <type_traits>

template<typename Object>
class object_worker
{
public:
    object_worker(Object&& o) // o - is not POD
    {
        // do something
    }
};

template<typename Object>
class object_worker<std::is_pod<Object>::value == true> // how to make this thing work?
{
public:
    object_worker(Object &&o) // o - is POD
    {
        // do something different
    }
};
  • 是否必须使用某种技术做某事?喜欢部分模板专业化
  • 如果可以实现,它的名称是什么? (例如部分模板专业化概念

1 个答案:

答案 0 :(得分:1)

是的,你可以做这样的事情。它被广泛使用。

template<typename T, bool = is_pod<T>::value>>
class foo
{
};

// This is a partial template specialization.
// Triggered only when is_pod<T>::value is true
template<typename T>
class foo<T, true> // T can be only a POD type
{
};