Проблема в разпаковке msgpack об'екта

есть такой msgpack об'єкт - ["a", [[9,1980,11503,2.65,-1,0,0,null,0,0,0,0,0]]].

Я пробую розпаковать первий елемент(ошибок нет, дальше читайте комантарии):

int PacketAnalyzer(msgpack::object& obj) {
    std::string first;
    obj.via.array.ptr[0].convert(first);
    std::cout << "First element: " << first << std::endl;
    //Тут мне надо розпаковать Вторую часть об'екта с такой структурой [[]].
    //Но програма заканчиваеться аварийно
    std::vector<msgpack::object> outer_array;
    obj.via.array.ptr[1].convert(outer_array);
    std::vector<msgpack::object> inner_array;
    outer_array[0].convert(inner_array);
    int value;
    inner_array[0].convert(value);
    cout << value << endl;
    return 0;
}

Ответы (1 шт):

Автор решения: Swift - Friday Pie

Вызов obj.via.array.ptr[1].convert(outer_array); обращается к методу

msgpack::enable_if< !msgpack::is_array< T >::value 
                    &&!msgpack::is_pointer< T >::value, T & >::type 
         msgpack::object::convert(T & v) const

который использует перегрузку оператора operator>>(msgpack::object const & o, T & v ) для типа T=std::vector<msgpack::object>. Если такового нет, by design ошибок при компиляции не будет, метод вызовет исключение во время исполнения msgpack::type_error. Это часть идеологии msgpack, т.к. библиотека часто используется из кода на интерпретирующих языках.

Пишите юнит-тест где все стадии кроме разборки можно исключить. А здесь, похоже, логическая ошибка, мне не известно определение для вектора msgpack.

→ Ссылка