我如何理解此处声明的内容:(这是从 this forum 上的另一篇文章中摘录的)
template<typename C> static char (&f(ChT<int Fallback::*, &C::x>*))[1];
我是这样读的:
静态函数模板f
用 (ChT<int Fallback::*, &C::x>*)
调用,但我无法理解为什么有地址运算符以及为什么有数组?
我仍在学习如何理解 C++ 声明,所以请慢慢仔细地解释这一点。
最佳答案
使用一些类型定义:
typedef char (&arrayref_t)[1];
这是对字符数组的引用。该数组只有一个元素。
typedef ChT<int Fallback::*, &C::x> tmpl_t;
这是一个模板类,使用“指向int
类的Fallback
成员的指针”类型和指向x
的成员指针实例化。在类里面C
.
static arrayref_t f(tmpl_t*);
函数现在接受一个指向 tmpl_t
的指针并返回 arrayref_t
.
关于c++ - 奇怪的声明(模板)。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463697/