simple_type_specifier不支持nullptr_type

时间:2016-01-22 16:41:25

标签: c++ templates c++11

我希望有一个函数fn,它包含指向const和非const对象的指针集。我正在写一个模板来做这件事。

template<typename T1,
         typename T2,
         std::enable_if<std::is_same<T1,NodeType *>::value && std::is_same<T2,EdgeType *>::value, std::nullptr_t>::type = nullptr>
static void fn(unordered_set<T1> &nodeSet, unordered_set<T2>& edgeSet);

在上面的示例中,我希望能够传递unordered_set<const NodeType *>以及unordered_set<NodeType *>(与EdgeType相似)。但是,我收到一个错误: ‘nullptr_type’ not supported by simple_type_specifier。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

除了您遗失的某些std::remove_const之外,要实现此目的,您应使用std::remove_pointertemplate<typename T1, typename T2, typename std::enable_if< std::is_same<typename std::remove_const<typename std::remove_pointer<T1>::type>::type, NodeType>::value && std::is_same<typename std::remove_const<typename std::remove_pointer<T2>::type>::type, EdgeType>::value, typename std::nullptr_t>::type = nullptr> static void fn(std::unordered_set<T1> &nodeSet, std::unordered_set<T2>& edgeSet); 类型特征:

default_wait_time

Live Demo