Здравствуйте, red75, Вы писали:
EP>>Выражай их и в C++ — самая развитая система типов среди mainstream языков
R>Algebraic data types нет.
Как это нет если есть?
R>Я где-то тут приводил темплейтно/макросный ужас, который нужен для более-вменяемого discriminated union.
Готовый Boost.Variant есть уже больше 13 лет — бери и используй. Если хочется реализовать свой, то на C++14 он реализуется на порядки проще чем на C++98.