CD
Size: a a a
CD
KO
KO
АК
void bar(Big & big) {
(void)big;
}
template <typename... Args>
void foo(Args&&... args) {
((void)bar(args), ...);
}
CD
int dummy[] = { ((void)bar(args), 0)... };
KO
KO
CD
CD
DP
template <typename... Args>
void foo(Args&&... args) {
int i{};
(..., static_cast<void>([&i](const auto&){
++i;
}(args)));
}
KO
CD
(bar(args), ...)
CD
KO
AU
CD
AU
AU
YS
pure virtual method called
. Вот есть у меня базовый класс, пусть будет Base
, в котом есть virtual void event_handler(Event &ev) = 0
. И есть другой класс, пусть будет Derived
, который собственно и содержит реализацию этого метода. Что хочу - позвать из Base
класса этот метод, но иногда оно падает с ошибкой как выше.Derived
класс не успел выполнить свой конструктор, а Base
класс уже позвал его метод (т.к. там еще и std::thread, да). И получается то самое "никогда не вызывайте виртуальные методы из конструктора/деструктора"П
pure virtual method called
. Вот есть у меня базовый класс, пусть будет Base
, в котом есть virtual void event_handler(Event &ev) = 0
. И есть другой класс, пусть будет Derived
, который собственно и содержит реализацию этого метода. Что хочу - позвать из Base
класса этот метод, но иногда оно падает с ошибкой как выше.Derived
класс не успел выполнить свой конструктор, а Base
класс уже позвал его метод (т.к. там еще и std::thread, да). И получается то самое "никогда не вызывайте виртуальные методы из конструктора/деструктора"