Я использую 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