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

最佳答案

这是 M Ember 检查器的 P ointer ,因此是 PtoM

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

关于c++ - (struct PToMTraits <U V::*>)模板规范是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33636832/

10-11 08:35