В моем коде много class
ов и struct
сек. И я хотел бы иметь возможность манипулировать ими в автоматическом режиме. Кодовое манипулирование struct foo1
в struct foo2
выглядит следующим образом:
Не изменено struct foo1
:
struct foo1 {
int i = 3;
bool b = true;
std::string str = "Hi";
char c = 'c';
};
Изменено struct foo2
:
struct foo2 {
int i = 3;
bool b = true;
std::string str = "Hi";
char c = 'c';
std::tuple<int*,bool*,std::string*,char*> members = std::make_tuple(&i, &b, &str, &c);
};
Я ищу автоматический способ сделать class
es и struct
s "умнее" с именованными членами tuple
. Это манипулирование кодом должно быть возможным в автоматическом режиме. Есть идеи, как этого добиться?
Редактировать 1:
Именованные элементы tuple
необходимо обновлять каждый раз, когда объект типа foo2
копируется или перемещается. Это делает манипулирование кодом еще более сложным.
Edit 2:
Спасибо aschepler за указание на то, что члены должны быть членами function :
static constexpr std::tuple<int foo2::*, bool foo2::*, std::string foo2::*, char foo2::*> members() { return std::make_tuple(&foo2::i, &foo2::b, &foo2::str, &foo2::c); }