我在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 。
它检查传入的类型是否是指向数据成员的指针类型(或不是)。它通过提供一个主模板(其result
为false
)和部分与U V::*
匹配的任何类型(即指向U
的任何类型V
的数据成员的指针)的部分特化来实现,该模板的result
为true
。
关于c++ - (struct PToMTraits <U V::*>)模板规范是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33636832/