Здравствуйте, Evgeny.Panasyuk, Вы писали:
R>>Я где-то тут приводил темплейтно/макросный ужас, который нужен для более-вменяемого discriminated union.
EP>Готовый Boost.Variant есть уже больше 13 лет — бери и используй. Если хочется реализовать свой, то на C++14 он реализуется на порядки проще чем на C++98.
Отсутствие прямой поддержки языком сложно компенсировать. Нормальный pattern-matching c case totality check библиотекой не сделаешь. А так можно, конечно, и гланды ректально вырезать.
Почему boost::variant требует динамическое выделение памяти:
http://www.boost.org/doc/libs/1_59_0/doc/html/variant/design.html#variant.design.never-empty.heap-backup-solution
Небольшая библиотечка, которая работает начиная с gcc 4.7, то есть 4 года, позволяющая более-менее комфортно извлекать значения из variant
https://github.com/exclipy/inline_variant_visitor