Обновить

Комментарии 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

да можно и без ADL https://habr.com/ru/articles/762250/
private та еще дыра в языке PrivateMorozov, какойто Ж)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации