#include <complex>
#include <functional>
#include <iostream>
#include <vector>
using Complex = std::complex<double>;
using namespace std::literals::complex_literals;
struct S
{
std::vector<Complex> data;
S& apply(std::function<Complex(Complex const&)> f)
{
for( auto& elem : data )
{
elem = f(elem);
}
return *this;
}
};
int main()
{
S s{{1.i,-2.i,3.i}};
Complex (*func)(const Complex&) = std::conj;
s.apply(func);
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGNvbXBsZXg+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBDb21wbGV4ID0gc3RkOjpjb21wbGV4PGRvdWJsZT47Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOjpsaXRlcmFsczo6Y29tcGxleF9saXRlcmFsczsKCnN0cnVjdCBTCnsKICAgIHN0ZDo6dmVjdG9yPENvbXBsZXg+IGRhdGE7CiAgICBTJiBhcHBseShzdGQ6OmZ1bmN0aW9uPENvbXBsZXgoQ29tcGxleCBjb25zdCYpPiBmKQogICAgewogICAgICAgIGZvciggYXV0byYgZWxlbSA6IGRhdGEgKQogICAgICAgIHsKICAgICAgICAgICAgZWxlbSA9IGYoZWxlbSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgUyBze3sxLmksLTIuaSwzLml9fTsKICAgIENvbXBsZXggKCpmdW5jKShjb25zdCBDb21wbGV4JikgPSBzdGQ6OmNvbmo7CiAgICBzLmFwcGx5KGZ1bmMpOwogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQ==