История изменений
Исправление tailgunner, (текущая версия) :
В Паскале есть вариантные записи.
ЕМНИП, у них очень слабый контроль компилятором.
В Си делается с помощью структурки с тегом и объединением. Да, руками.
Руками можно сделать вообще всё, но это нерелевантно обсуждению.
Абсолютно не трейты.
Можно пример для того, чтобы прочувствовать разницу?
По сравнению с Rust: нет наследования; невозможно указать как границу в дженерике. По сравнению с абстрактным классом Си++: нет проверки типов (по-любому объект - это void *).
Мы говорим об ООП,
Выше уже сказали: современное понимание ООП - это наследование интерфейсов и агрегация при их реализации (и кстати, эти идеи озвучивались уже 25 лет назад).
исключениях и др. выпиленных фичах.
Выпиленных по сравнению с чем? В Си и Паскале никогда не было ООП, в стандартном Си (и стандартном Паскале?) нет исключений и дженериков.
И якобы замену для них.
Мне не нужна замена C++-style ООП и исключений. Если тебе необходимо и то, и другое - Си++ никуда не делся
Исходная версия tailgunner, :
В Си делается с помощью структурки с тегом и объединением. Да, руками.
Руками можно сделать вообще всё, но это нерелевантно обсуждению.
Абсолютно не трейты.
Можно пример для того, чтобы прочувствовать разницу?
По сравнению с Rust: нет наследования; невозможно указать как границу в дженерике. По сравнению с абстрактным классом Си++: нет проверки типов (по-любому объект - это void *).
Мы говорим об ООП,
Выше уже сказали: современное понимание ООП - это наследование интерфейсов и агрегация при их реализации (и кстати, эти идеи озвучивались уже 25 лет назад).
исключениях и др. выпиленных фичах.
Выпиленных по сравнению с чем? В Си и Паскале никогда не было ООП, в стандартном Си (и стандартном Паскале?) нет исключений и дженериков.
И якобы замену для них.
Мне не нужна замена C++-style ООП и исключений. Если тебе необходимо и то, и другое - Си++ никуда не делся