Pull to refresh

Comments 2

Про ADL не упомянули самую мякотку

class Secret
{
    private:
    int i_am_private = 33;
};

template <auto M>
struct Loophole {
    friend auto AdlMagic(Secret const&) noexcept { return M; }
};

template struct Loophole<&Secret::i_am_private>;
auto AdlMagic(Secret const&) noexcept;

int main(void)
{
    Secret s;
    auto i_am_private = AdlMagic(s);
    std::cout << s.*i_am_private <<  std::endl;
    return 0;
}

И это работает!)

https://godbolt.org/z/rn1GYKb4M

Sign up to leave a comment.

Articles