Boost сериализация и QString

Время от времени кому то в голову приходит мысль использовать boost сериализацию в проектах с Qt. Тут встает вопрос как быть со строками, т.к. хочется просматривать  и редактировать.

Просто приведу пример кода без объяснений, думаю что все и так знают как можно работать с юникодом

namespace boost
{
    namespace serialization
    {

        template<class Archive>
        inline void save(Archive& ar, const QString& s,
                const unsigned int /*version*/)
        {
            auto ba = s.toUtf8();
            std::string str(ba.data(), ba.size());

            ar << make_nvp("QString", str);
        }

        template<class Archive>
        inline void load(Archive& ar, QString& s,
                const unsigned int /*version*/)
        {
            std::string str;
            ar >> make_nvp("QString", str);
            QByteArray ba(&str[0], str.size());
            s.append(ba);
        }

        template<class Archive>
        inline void serialize(Archive& ar, QString& s,
                const unsigned int file_version)
        {
            boost::serialization::split_free(ar, s, file_version);
        }
    }
}