Re: Converting pointer-to-member to member index using Boost.PFR

Joaquin M López Muñoz via Boost-users <[email protected]> Sat, 6 Sep 2025 11:12:46 +0200
Newsgroups gmane.comp.lib.boost.user
Message-ID <[email protected]>
RWwgMDYvMDkvMjAyNSBhIGxhcyAxOjUwLCBtYWlsLS0tIHZpYSBCb29zdC11c2VycyBlc2NyaWJp
w7M6DQo+IENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0Og0KPg0KPiAgICAgIHN0cnVjdCBQ
YXJ0aWNsZQ0KPiAgICAgIHsNCj4gICAgICAgICAgZmxvYXQgc2NhbGU7DQo+ICAgICAgICAgIGZs
b2F0IG9wYWNpdHk7DQo+ICAgICAgICAgIGZsb2F0IHJvdGF0aW9uOw0KPiAgICAgIH07DQo+DQo+
IEkgd2FudCB0aGUgZm9sbG93aW5nIHRvIGNvbXBpbGU6DQo+DQo+ICAgICAgc3RhdGljX2Fzc2Vy
dChpbmRleE9mPCZQYXJ0aWNsZTo6c2NhbGU+KCkgPT0gMCk7DQo+ICAgICAgc3RhdGljX2Fzc2Vy
dChpbmRleE9mPCZQYXJ0aWNsZTo6b3BhY2l0eT4oKSA9PSAxKTsNCj4gICAgICBzdGF0aWNfYXNz
ZXJ0KGluZGV4T2Y8JlBhcnRpY2xlOjpyb3RhdGlvbj4oKSA9PSAyKTsNCj4NCj4gSSBoYXZlIG1h
bmFnZWQgdG8gaW1wbGVtZW50IGEgd29ya2luZyB2ZXJzaW9uIHVzaW5nIEJvb3N0LlBGUjoNCj4N
Cj4gICAgICB0ZW1wbGF0ZSA8YXV0byBQTT4NCj4gICAgICBjb25zdGV2YWwgaW50IGluZGV4T2Yo
KQ0KPiAgICAgIHsNCj4gICAgICAgICAgdXNpbmcgQ2xhc3NUeXBlID0gdHlwZW5hbWUgUE1UcmFp
dHM8ZGVjbHR5cGUoUE0pPjo6Q2xhc3NUeXBlOw0KPiAgICAgICAgICBjb25zdGV4cHIgQ2xhc3NU
eXBlIG9iant9Ow0KPg0KPiAgICAgICAgICBzdGQ6OnNpemVfdCByZXN1bHQgPSAtMTsNCj4NCj4g
ICAgICAgICAgWyZdPGF1dG8uLi4gSXM+KHN0ZDo6aW5kZXhfc2VxdWVuY2U8SXMuLi4+KQ0KPiAg
ICAgICAgICB7DQo+ICAgICAgICAgICAgICAoLi4uLA0KPiAgICAgICAgICAgICAgICAgICgNCj4g
ICAgICAgICAgICAgICAgICAgICAgKCAgICBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oJihib29z
dDo6cGZyOjpnZXQ8SXM+KG9iaikpKQ0KPiAgICAgICAgICAgICAgICAgICAgICA9PSBzdGF0aWNf
Y2FzdDxjb25zdCB2b2lkKj4oJihvYmouKlBNKSkgICAgICAgICAgICAgICAgICApDQo+ICAgICAg
ICAgICAgICAgICAgICAgID8gKHJlc3VsdCA9IElzKSA6IDANCj4gICAgICAgICAgICAgICAgICAp
DQo+ICAgICAgICAgICAgICApOw0KPiAgICAgICAgICB9KHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5j
ZTxib29zdDo6cGZyOjp0dXBsZV9zaXplX3Y8Q2xhc3NUeXBlPj57fSk7DQo+DQo+ICAgICAgICAg
IHJldHVybiByZXN1bHQ7DQo+ICAgICAgfQ0KPg0KPiBCdXQgSSBhbSBkaXNwbGVhc2VkIG9mIHRo
ZSBmYWN0IHRoYXQgSSBkbyBuZWVkIHRvIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdHlwZSBgQ2xhc3NU
eXBlYCBpbiBvcmRlciB0byBtYWtlIGBvYmouKlBNYCB3b3JrLg0KPg0KPiBJcyB0aGVyZSBhIGJl
dHRlciB3YXkgb2YgZG9pbmcgdGhpcyB0aGF0ICgxKSBkb2VzIG5vdCByZXF1aXJlIHRoZSBjcmVh
dGlvbiBvZiBhbiBvYmplY3QgYXQgY29tcGlsZS10aW1lIGFuZC9vciAoMikgaXMgbW9yZSBlZmZp
Y2llbnQgdG8gY29tcGlsZT8NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18NCg0KU29tZXRoaW5nIGxpa2UgdGhpcyAoZmFpbHMgd2l0aCBDbGFuZyBhbmQg
SSBoYXZlbid0IHRyaWVkIHdpdGggVlMpOg0KDQpodHRwczovL2dvZGJvbHQub3JnL3ovMUszNllm
YzU4DQoNCiDCoCAjaW5jbHVkZSA8YWxnb3JpdGhtPg0KIMKgICNpbmNsdWRlIDxhcnJheT4NCiDC
oCAjaW5jbHVkZSA8Ym9vc3QvbXAxMS9hbGdvcml0aG0uaHBwPg0KIMKgICNpbmNsdWRlIDxib29z
dC9wZnIvY29yZV9uYW1lLmhwcD4NCiDCoCAjaW5jbHVkZSA8Ym9vc3QvdHlwZV9pbmRleC9jdHRp
X3R5cGVfaW5kZXguaHBwPg0KDQogwqAgdGVtcGxhdGU8YXV0byBwbT4gc3RydWN0IHBtX2NsYXNz
X2ltcGw7DQoNCiDCoCB0ZW1wbGF0ZTxjbGFzcyBDLCB0eXBlbmFtZSBULCBUIEM6OipwbT4NCiDC
oCBzdHJ1Y3QgcG1fY2xhc3NfaW1wbDxwbT4NCiDCoCB7DQogwqAgwqAgdXNpbmcgdHlwZSA9IEM7
DQogwqAgfTsNCg0KIMKgIHRlbXBsYXRlPGF1dG8gcG0+IHVzaW5nIHBtX2NsYXNzID0gdHlwZW5h
bWUgcG1fY2xhc3NfaW1wbDxwbT46OnR5cGU7DQoNCiDCoCB0ZW1wbGF0ZTxhdXRvIHg+IHN0cnVj
dCBwbV9uYW1lX2hlbHBlcnt9Ow0KDQogwqAgdGVtcGxhdGU8YXV0byBwbT4NCiDCoCBjb25zdGV2
YWwgaW50IGluZGV4X29mKCkNCiDCoCB7DQogwqAgwqAgdXNpbmcgQyA9IHBtX2NsYXNzPHBtPjsN
CiDCoCDCoCBjb25zdGV4cHIgc3RkOjpzaXplX3QgTiA9IGJvb3N0OjpwZnI6OnR1cGxlX3NpemVf
djxDPjsNCiDCoCDCoCBzdGQ6OmFycmF5PHN0ZDo6c3RyaW5nX3ZpZXcsIE4+IG5hbWVzOw0KYm9v
c3Q6Om1wMTE6Om1wX2Zvcl9lYWNoPGJvb3N0OjptcDExOjptcF9pb3RhX2M8Tj4+KFsmXShhdXRv
IEkpIHsNCiDCoCDCoCDCoCBuYW1lc1tJXSA9IGJvb3N0OjpwZnI6OmdldF9uYW1lPEksQz4oKTsN
CiDCoCDCoCB9KTsNCiDCoCDCoCBzdGQ6OnN0cmluZ192aWV3IG1hbmdsZWRfcG1fbmFtZXsNCmJv
b3N0Ojp0eXBlaW5kZXg6OmN0dGlfdHlwZV9pbmRleDo6dHlwZV9pZDxwbV9uYW1lX2hlbHBlcjxw
bT4+KCkucmF3X25hbWUoKQ0KIMKgIMKgIH07DQogwqAgwqAgc3RkOjpzdHJpbmdfdmlldyBwbV9u
YW1lew0KIMKgIMKgIMKgIG1hbmdsZWRfcG1fbmFtZS5iZWdpbigpICsgbWFuZ2xlZF9wbV9uYW1l
LmZpbmRfbGFzdF9vZignOicpICsgMSwNCiDCoCDCoCDCoCBtYW5nbGVkX3BtX25hbWUuYmVnaW4o
KSArIG1hbmdsZWRfcG1fbmFtZS5maW5kX2xhc3Rfb2YoJz4nKQ0KIMKgIMKgIH07DQogwqAgwqAg
cmV0dXJuIHN0ZDo6ZmluZChuYW1lcy5iZWdpbigpLCBuYW1lcy5lbmQoKSwgcG1fbmFtZSkgLSBu
YW1lcy5iZWdpbigpOw0KIMKgIH0NCg0KIMKgIHN0cnVjdCBQYXJ0aWNsZQ0KIMKgIHsNCiDCoCDC
oCBmbG9hdCBzY2FsZTsNCiDCoCDCoCBmbG9hdCBvcGFjaXR5Ow0KIMKgIMKgIGZsb2F0IHJvdGF0
aW9uOw0KIMKgIH07DQoNCiDCoCBpbnQgbWFpbigpDQogwqAgew0KIMKgIMKgIHN0YXRpY19hc3Nl
cnQoaW5kZXhfb2Y8JlBhcnRpY2xlOjpzY2FsZT4oKSA9PSAwKTsNCiDCoCDCoCBzdGF0aWNfYXNz
ZXJ0KGluZGV4X29mPCZQYXJ0aWNsZTo6b3BhY2l0eT4oKSA9PSAxKTsNCiDCoCDCoCBzdGF0aWNf
YXNzZXJ0KGluZGV4X29mPCZQYXJ0aWNsZTo6cm90YXRpb24+KCkgPT0gMik7DQogwqAgfQ0KDQpK
b2FxdcOtbiBNIEzDs3BleiBNdcOxb3oNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQm9vc3QtdXNlcnMgbWFpbGluZyBsaXN0IC0tIGJvb3N0LXVzZXJz
QGxpc3RzLmJvb3N0Lm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGJvb3N0LXVz
ZXJzLWxlYXZlQGxpc3RzLmJvb3N0Lm9yZwpodHRwczovL2xpc3RzLmJvb3N0Lm9yZy9tYWlsbWFu
My9saXN0cy9ib29zdC11c2Vycy5saXN0cy5ib29zdC5vcmcvCkFyY2hpdmVkIGF0OiBodHRwczov
L2xpc3RzLmJvb3N0Lm9yZy9hcmNoaXZlcy9saXN0L2Jvb3N0LXVzZXJzQGxpc3RzLmJvb3N0Lm9y
Zy9tZXNzYWdlL1A0U1hLUzVUVEVJSk1PVjRTT0JZTEFMVk9VN0ZTRTdGLyAK