Здравствуйте, B0FEE664, Вы писали:
BFE>Если у вас есть указатель на базовый класс, то вызов виртуального метода оправдан. BFE>Но откуда у вас указатель, если все объекты либо глобальные/статические, либо лежат на стеке? (разумеется рекурсивные вызовы без ограничения глубины на стеке запрещены)
Вы не можете ответить на простой вопрос. Когда сможете, тогда и можно будет продолжить разговор. Расписывать здесь пояснения элементарных вещей на три экрана у меня нет возможности.
Так что еще раз: А каким боком виртуальность функций к целому или не целому объекту?
S>>Есть ощущение, что вам матчасть нужно сперва подучить. BFE>Это иллюзия.
Вы себе сильно льстите.
S>>>>Опять же, где именно шаблоны, лямбды или structured binding с if constexpr взаимоувязаны с динамической памятью? BFE>>>Вопрос не только в динамической памяти, это просто пример. Всё гораздо сложнее. S>>Давайте разберемся с более простыми вещами: где именно шаблоны, лямбды или structured binding с if constexpr взаимоувязаны с динамической памятью? BFE>Никак не увязаны.
Вот и получается, что отсутствие динамической памяти вообще никак не превращает современный C++ в Си с классами. Поэтому у вас в исходном утверждении ошибка. Что и определяет все последующие заблуждения.
S>>Так у вас если нет динамической памяти и исключений не будет. BFE>Это почему вы так думаете? Насколько я помню стандарт, память под исключения выделяется особым образом. Вроде бы implementation defined.
Потому что в распространенных реализациях память для исключений гарантированно есть только под bad_alloc. Остальные объекты исключений размещаются в хипе. Что и делает возможным существование exception_ptr, который для исключений работает как умный указатель.
Соответственно, если у вас нет динамической аллокации, то и исключений, скорее всего, не будет.