базовом классе?
Метод "в лоб" всегда фейлится
А какой юзкейс?
class X { ... protected: void notify_internal(); }; template <class Target> struct Accessor : private Target { Accessor() = delete; static void InjectNotification(Target& t) { if (Target has notify_internal) { const auto ni = &Target::notify_internal; (t.*ni)(); } } };
is_member_function_pointer?
'void X::notify_internal()' is protected within this context
Доступ к мемберам без учёта видимости можно сделать только через nttp
Надо проверить что метод именно protected, т.е. проверить чисто наличие метода будет недостаточно?
тут надо под шаблон павлика морозова...
Надо проверить наличие метода, который protected
Надо ли проверять что он protected?
тогда надо как-то определить есть ли метод в паблике
Нет. Это уже проблемы автора X Но private/public он точно не будет)
Тогда надо как-то применить вот это знание: https://t.me/ProCxx/481217
хз может так пойдет? https://wandbox.org/permlink/Dy7jN4cuAneb4KTS
Я просто помогаю с поддержанием порядка в С++ чатах!
__if_exists(T::method) { }
Так подожди При private наследовании можно вызывать protected методы базы?
Да Внутри метода наследника же (и трюк с указателем на член)
Упс. Похоже, так нельзя Плюшки MSVC?)
Обсуждают сегодня