#include <iostream>
#include <memory>
struct Obj {
int a;
int b;
};
std::unique_ptr<int[]>
fn(Obj* os, size_t N, int Obj::*member)
{
auto arr = std::make_unique<int[]>(N);
for (size_t i = 0; i < N; ++i) {
arr[i] = os[i].*member;
}
return arr;
}
int main() {
Obj os[] { { 1, 10 }, { 2, 20 } };
auto a1 = fn(os, 2, &Obj::a);
auto a2 = fn(os, 2, &Obj::b);
for (size_t i = 0; i < 2; ++i) {
std::cout << i << ": " << a1[i] << ", " << a2[i] << '\n';
}
}
CSNpbmNsdWRlIDxpb3N0cmVhbT4KCSNpbmNsdWRlIDxtZW1vcnk+CgkKCXN0cnVjdCBPYmogewoJCWludCBhOwoJCWludCBiOwoJfTsKCQoJc3RkOjp1bmlxdWVfcHRyPGludFtdPgoJZm4oT2JqKiBvcywgc2l6ZV90IE4sIGludCBPYmo6OiptZW1iZXIpCgl7CgkJYXV0byBhcnIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludFtdPihOKTsKCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewoJCQlhcnJbaV0gPSBvc1tpXS4qbWVtYmVyOwoJCX0KCQlyZXR1cm4gYXJyOwoJfQoJCglpbnQgbWFpbigpIHsKCQlPYmogb3NbXSB7IHsgMSwgMTAgfSwgeyAyLCAyMCB9IH07CgkJCgkJYXV0byBhMSA9IGZuKG9zLCAyLCAmT2JqOjphKTsKCQlhdXRvIGEyID0gZm4ob3MsIDIsICZPYmo6OmIpOwoJCQoJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgKytpKSB7CgkJCXN0ZDo6Y291dCA8PCBpIDw8ICI6ICIgPDwgYTFbaV0gPDwgIiwgIiA8PCBhMltpXSA8PCAnXG4nOwoJCX0KCX0=