(struct PToMTraits <u v :: * =“”>)模板规范是什么意思?

时间:2015-11-10 18:18:19

标签: c++ templates

我在Alexandrescu的书中发现了这种类型特征,我不知道如何理解这个规范

template <typename T>
class TypeTraits
{
private:
template <class U> struct PToMTraits
{
enum { result = false };
};
template <class U, class V>
struct PToMTraits<U V::*>
{
enum { result = true };
};
public:
enum { isMemberPointer = PToMTraits<T>::result };
...
};

1 个答案:

答案 0 :(得分:3)

这是 P ointer M 余烬检查器,因此 PtoM

它检查传入的类型是否是指向数据成员的类型(或不是)。它通过提供resultfalse的主模板以及与U V::*匹配的任何类型的部分特化(即指向任何类{{1}的数据成员的指针)来实现此目的。任何类型U),其Vresult