#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}};
s.apply(static_cast<Complex (*)(const Complex&)>(std::conj));
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGNvbXBsZXg+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBDb21wbGV4ID0gc3RkOjpjb21wbGV4PGRvdWJsZT47Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOjpsaXRlcmFsczo6Y29tcGxleF9saXRlcmFsczsKCnN0cnVjdCBTCnsKICAgIHN0ZDo6dmVjdG9yPENvbXBsZXg+IGRhdGE7CiAgICBTJiBhcHBseShzdGQ6OmZ1bmN0aW9uPENvbXBsZXgoQ29tcGxleCBjb25zdCYpPiBmKQogICAgewogICAgICAgIGZvciggYXV0byYgZWxlbSA6IGRhdGEgKQogICAgICAgIHsKICAgICAgICAgICAgZWxlbSA9IGYoZWxlbSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgUyBze3sxLmksLTIuaSwzLml9fTsKICAgIHMuYXBwbHkoc3RhdGljX2Nhc3Q8Q29tcGxleCAoKikoY29uc3QgQ29tcGxleCYpPihzdGQ6OmNvbmopKTsKICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Cn0=