(结构 PToMTraits<U V::*>)模板规范是什么意思?

What does (struct PToMTraits<U V::*>) template specification mean?

本文关键字:是什么 意思 PToMTraits 结构 lt gt      更新时间:2023-10-16

我在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 };
...
};

它是p指向M成员检查器,因此PtoM

它检查传入的类型是否是指向数据成员类型的指针(或不是)。它通过提供其resultfalse的主模板和对匹配U V::*的任何类型(即指向任何类型V的任何类U的数据成员的指针)的部分专用化来实现这一点,其中resulttrue