В вопросе Deserializing a heterogeneous map with MessagePack in C++ ответ относится к gist, который содержит пример на основе рекурсивного boost::variant
с msgpack. Я пытаюсь воспроизвести это с последней версией библиотеки msgpack-c (1.3.0) и получить ряд ошибок во время компиляции. Некоторые из них связаны с изменениями типов в API (типы msgpack DOUBLE и RAW больше нет), другие кажутся более фундаментальными:Использование msgpack в C++ с вариантами структур данных
In file included from msgpack-c/include/msgpack.hpp:10:0,
from variant.cpp:2:
msgpack-c/include/msgpack/object.hpp: In instantiation of ‘const msgpack::v1::object& msgpack::v1::adaptor::convert<T, Enabler>::operator()(const
<... lengthy output snipped for clarity ...>
msgpack::v1::object&, T&) const [with T = boost::detail::variant::void_>’ has no member named ‘msgpack_unpack’
v.msgpack_unpack(o.convert());
и аналогичные сообщения о не член имени msgpack_pack
.
Есть ли обновленная версия или пример этого, что я совместим с последней версией msgpack-c?
Я компиляция на машине CentOS7 с GCC версией 4.8.5, форсируют 1,58, msgpack-с, включенные в качестве заголовка только, используя следующую команду:
g++ --std=c++11 -Imsgpack-c/include -o variant variant.cpp
Похоже, ваш титул вопрос и вопрос Адрес тело совершенно разные темы - собственно вопрос, кажется, спросить, как использовать msgpack с C++ 'variant's, но тело, вместо расширения на этом, в основном просто спрашивает, как использовать msgpack. – Cubic