Указатели на переменные-члены в шаблонных классах
Составил вот такой минимальный пример:
#include <cstdlib>
#include <iostream>
template <typename T> class Point {
public:
T x;
T y;
static T Point<T>::*arr[2];
};
template <typename T>
T Point<T>::*Point<T>::arr[2] = {
&Point<T>::x,
&Point<T>::y,
};
int main() {
Point<int> p{5, 10};
auto a = p.arr[0];
auto b = p.arr[1];
std::cout << p.*a << std::endl;
std::cout << p.*b << std::endl;
return EXIT_SUCCESS;
}
Собственно по вопросам:
Что это за тип
T Point<T>::*(я, наприме, не могу привести его кconst void *)?Взятие указателя на переменную-член доступно только в шаблонах?