使用模板参数设置特定成员

lez*_*lon 3 c++ templates

让我说我有这个:

    struct myStruct {
    int A;
    int B;
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过这样的模板参数设置特定成员?

void setTo10<?? member>(myStruct& obj) {
obj.member = 10;
}
Run Code Online (Sandbox Code Playgroud)

//用法:

setTo10<"member A">(obj);
Run Code Online (Sandbox Code Playgroud)

我知道用宏可以实现,但模板怎么样?

谢谢

ipc*_*ipc 5

像这样的东西?

struct myStruct {
  int A;
  int B;
};

template <typename T, typename V>
void set(T& t, V T::*f, V v)
{ t.*f = v; }

int main()
{
  myStruct m;
  set(m, &myStruct::A, 10);
  std::cout << m.A << '\n';
}
Run Code Online (Sandbox Code Playgroud)