#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;
}