Синтаксическая ошибка BOOST_CLASS_EXPORT - PullRequest
0 голосов
/ 03 июля 2018

Я использую VS12 в своем проекте и определяю очень простой класс, который сериализует его атрибуты. Однако, когда я ставлю BOOST_CLASS_EXPORT, я получаю синтаксическую ошибку:

syntax error : missing ';' before '<'

Однако, когда я опускаю BOOST_CLASS_EXPORT, все работает нормально. Мне было интересно, может ли это зависеть от специализации шаблона, используемой BOOST_CLASS_EXPORT (я также использовал BOOST_CLASS_EXPORT_GUID с той же ошибкой). Есть ли какие-либо ошибки в VS12 по этому поводу?

Фрагмент:

namespace a { namespace b {
    class BaseSerialization {
        public:
            BaseSerialization(const std::string& functionName) : functionName(functionName) { }
            virtual void getFunctionName() const = 0;

        private:
            friend class ::boost::serialization::access;

            template <class Archive> void serialize(Archive &ar, unsigned int const file_version) {
                ar & BOOST_SERIALIZATION_NVP(functionName);
            }

        protected:
            std::string functionName;
        };

        class FOOZZ : BaseSerialization {
        public:
            FOOZZ(const std::string& functionName) : BaseSerialization("a"), functionName(functionName) { }
            virtual void getFunctionName() {
                int a;
            }

        private:
            friend class ::boost::serialization::access;

            template <class Archive> void serialize(Archive &ar, unsigned /*int const file_version*/) {
                ar & BOOST_SERIALIZATION_NVP(functionName);
            }

        protected:
            std::string functionName;
        };
        BOOST_CLASS_EXPORT_GUID(FOOZZ, "FOOZZ")
// namespace a, namespace b
...