我在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 };
...
};发布于 2015-11-10 18:23:06
这是一个P燕麦到M烬检查,因此PtoM。
它检查传入的类型是否是指针到数据成员类型(或者不是)。为此,它提供了一个主模板,其result为false,并对与U V::*匹配的任何类型(即指向任何类型V的任何类U的数据成员的指针)进行了部分专门化,后者的result是true。
https://stackoverflow.com/questions/33636832
复制相似问题