|
Boost Users : |
From: Richard Turrin (richt_at_[hidden])
Date: 2007-12-23 16:27:42
Hi,
I am in the midst of migrating some projects into VS 2008, and have downloaded and built the boost library from the SVN Trunk (retrieved on 18 December, 2007 @ 4:09 pm) which seems to satisfy support for VS 2008. However, I was having a problem compiling some code that calls the macro BOOST_SHARED_POINTER_EXPORT (the code uses Boost serialization on some shared_ptr objects). I was running into the following error:
MyOuterClass.h(11) : error C2371: '`anonymous-namespace'::boost_serialization_guid_initializer___LINE___1' : redefinition; different basic types
MyOuterClass.h(10) : see declaration of '`anonymous-namespace'::boost_serialization_guid_initializer___LINE___1'
The issue seems to be located in the BOOST_CLASS_EXPORT_GUID_1 macro, line 160 in serialization/export.hpp. The following macro is not expanding as desired:
#define BOOST_CLASS_EXPORT_GUID_1(T, K) \
...
BOOST_PP_CAT(boost_serialization_guid_initializer_, __LINE__ ## _1) \
I believe the author of this line intended that __LINE__ would be replaced with a line number where the macro is implicitly called from, and THEN concatenated with the _1 token. Unfortunately, it seems that the two tokens are concatenated first creating __LINE___1 in the process. I have a trivial workaround:
#define EXPAND(x) x
#define BOOST_CLASS_EXPORT_GUID_1(T, K) \
...
BOOST_PP_CAT(boost_serialization_guid_initializer_, EXPAND(__LINE__) ## _1) \
This allows me to compile without the error (under VS 2008). Please advise if there is a better or more appropriate solution. Also, I wasn't sure whether _1 was a token literal or an mpl (Boost Metaprogramming library) placeholder.
I realize that 1.35 is not yet ready for release. So, I'm not expecting everything to work correctly. So far, this is the only issue I've run into.
Let me know if you need more information. Thank you for your time!
Best Regards,
Rich Turrin
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net