Рассмотрим приведенный ниже код:
struct A {int x; bool y; double z;};
template <class T>
void func(T A::*fieldPtr) {}
int main() { func(&A::x); }
Можно ли заставить func
принимать несколько указателей на A
членов с переменными шаблонами? Таким образом, его можно использовать следующим образом:
func(&A::x, &A::y);
func(&A::x, &A::y, &A::z);
...
Моя первая идея была такой:
template <class... Args>
void func(Args... A::*fieldPtr);
, но она не компилируется.
EDIT1
С MSVC 2017 я получаю: ошибка C2988: неузнаваемое объявление / определение шаблона
С Clang: см. живой пример .