2016-07-21 7 views
0

У меня есть простой класс с неупорядоченной картой и функцией сериализации:увеличить unordered_map сериализации говорит: «сериализация» отсутствует даже при соответствующем включает

#include <boost/unordered_map.hpp> 
#include <boost/serialization/unordered_map.hpp> 

class to_serialize { 
    boost::unordered_map<int, int> m_map; 
public: 
    friend class boost::serialization::access; 
    template<class Archive> 
    void serialize(Archive & ar, const unsigned int) { 
    ar & m_map; 
    } 
}; 

Теперь я пытаюсь создать объект TS и сериализовать его:

#include <fstream> 
#include <boost/archive/binary_iarchive.hpp> 
#include <boost/archive/binary_oarchive.hpp> 
#include "ts.cpp" 

int main() { 
    to_serialize ts; 
    std::ofstream ofs("saved.bin"); 
    { 
    boost::archive::binary_oarchive oa(ofs); 
    oa << ts; 
    } 
    ofs.close(); 
} 

Это не может скомпилировать с:

boost/serialization/access.hpp:116:9: error: 'class boost::unordered::unordered_map<int, int>' has no member named 'serialize' 

Я не понимаю, что я пропускаю Вот? Кажется, что boost/serialization/unordered_map.hpp объявляет и определяет функцию сериализации для неупорядоченной карты, но я думаю, этого недостаточно?

ответ

0

Похоже, что ответ прост - boost реализует сериализацию STL unordered_map, но не его собственный boost :: unordered_map version :(.