Проблема с приведением типов заключается в том, что это небезопасно. Boost предоставляет несколько способов безопасного создания типов.
Если данные, которые могут быть отправлены в вашей системе сообщений, четко определены, ограничены несколькими возможными вариантами, то можно использовать объект boost::variant
. Варианты - это что-то вроде безопасных для типов союзов со встроенной поддержкой посещений.
Однако, если набор возможных данных более или менее произвольный, вы не сможете использовать variant
. Вы все еще хотите сохранить безопасность типов, чтобы лицо, получающее сообщение , не могло привести его к другому типу, отличному от того типа, которому оно было изначально присвоено. В этом случае boost::any
- хороший выбор. Да, вам все равно придется использовать any_cast
, но это не удастся, если он неправильного типа.