关于template<typename C> static One test(int C::*); 中int C::*的理解
来源:互联网 发布:编程算法基础 编辑:程序博客网 时间:2024/06/06 08:54
下面请看源码(来自于C++ Templates一书)
template<typename T>class IsClass{private: typedef char One; typedef struct{ char[2]; } Two; template<typename C> static One test(int C::*); template<typename C> static Two test(...);public: enum{ Yes = sizeof(IsClass<T>::test<T>(0)) == 1); enum{ No = !Yes};};理解:1、int C::*指的是参数类型为类C的一个int型指针成员,类成员指针和普通的指针不同,类成员指针是在类指针基础上的一个偏移,不是一个直接的内存地址偏移。int C::*就是 类C 中一个成员变量指针, 类型是int。
2、例如:int C::* 与 double C::*是不一样的, 一个是指向类C中的int型的数据成员,一个是指向类C中
的double 型的数据成员。
0 0
- 关于template<typename C> static One test(int C::*); 中int C::*的理解
- 关于c语言声明 void (*signal(int sig, void(*func)(int)))(int)的理解
- 关于C++Template的理解:
- C++template中typename 和class的区别
- C++:关于int *a; int &a; int & *a; int * &a
- C\C++中int、double等数据类型范围的理解
- C语言 int** 二重指针的理解
- c语言中关于int的位数问题
- 对于C语言中int main(int argc,char **argv)的理解
- c语言的int
- C++: typename in a template template parameter
- C语言中关于int、long int、long long 的区别
- 关于C语言中 int型变量和unsigned int变量范围之间的关系
- C语言中unsigned int 与 int 的自动转换
- c语言中unsigned int和int的区别
- C语言中int、long int、long long的区别
- C语言中int与long int的区别
- c语言中unsigned int和int的区别
- poj 1751 highways 最小生成树
- Unity自动打包工具
- ENSP静态链路聚合实验配置要点及实例
- svn_is out of sync with file system
- CentOS6 VNC配置
- 关于template<typename C> static One test(int C::*); 中int C::*的理解
- C语言贪心看最多节目
- join
- Hive-4-Hive的文件格式
- 小马哥-----高仿华为x1 刷机 6582芯片 详细拆机主板图与开机界面图 此机精仿版本 警惕
- 混合类型数据格式化输入(5)
- 2015寒假集训周赛第一场 A题
- 对于mysql数据库中日期 格式字段的存取
- wp15-1-24