Возможно ли в C++ в качестве параметра шаблона как-то задать поле класса/структуры?
Как известно, параметрами шаблона в C++ могут быть типы данных, константы, указатели... А существует ли способ каким-либо образом параметризовать идентификаторы полей классов или структур? Вот пример, иллюстрирующий мой вопрос:
#include <stdio.h>
struct TEST_STRUC
{
int a;
int b;
TEST_STRUC(int val_a, int val_b): a(val_a), b(val_b) {}
};
template </*как-то определяем параметр-поле*/ F, class TClass>
void PrintCompare(TClass* pCls1, TClass* pCls2)
{
if (pCls1->F > pCls2->F) puts("Greater than");
else if (pCls1->F < pCls2->F) puts("Lower than");
else puts("Equal");
}
//.............
int main()
{
TEST_STRUC t1(7,4), t2(8,2);
PrintCompare<a>(&t1, &t2);
PrintCompare<b>(&t1, &t2);
return 0;
}
Сразу оговорюсь: вариант замены полей на массив (и использование константных параметров-индексов, вместо полей) не интересен.