summaryrefslogtreecommitdiff
path: root/boost/archive/impl/basic_binary_iarchive.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/archive/impl/basic_binary_iarchive.ipp')
-rw-r--r--boost/archive/impl/basic_binary_iarchive.ipp14
1 files changed, 9 insertions, 5 deletions
diff --git a/boost/archive/impl/basic_binary_iarchive.ipp b/boost/archive/impl/basic_binary_iarchive.ipp
index 8ea39f7005..b8e7f454c5 100644
--- a/boost/archive/impl/basic_binary_iarchive.ipp
+++ b/boost/archive/impl/basic_binary_iarchive.ipp
@@ -12,7 +12,7 @@
#include <algorithm>
#include <cstring>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
using ::memcpy;
@@ -51,6 +51,8 @@ BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
basic_binary_iarchive<Archive>::init(){
// read signature in an archive version independent manner
std::string file_signature;
+
+ #if 0 // commented out since it interfers with derivation
try {
std::size_t l;
this->This()->load(l);
@@ -69,6 +71,11 @@ basic_binary_iarchive<Archive>::init(){
// will cause invalid_signature archive exception to be thrown below
file_signature = "";
}
+ #else
+ // https://svn.boost.org/trac/boost/ticket/7301
+ * this->This() >> file_signature;
+ #endif
+
if(file_signature != BOOST_ARCHIVE_SIGNATURE())
boost::serialization::throw_exception(
archive_exception(archive_exception::invalid_signature)
@@ -113,10 +120,7 @@ basic_binary_iarchive<Archive>::init(){
#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205))
this->set_library_version(input_library_version);
#else
- #if ! BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
- detail::
- #endif
- basic_iarchive::set_library_version(input_library_version);
+ detail::basic_iarchive::set_library_version(input_library_version);
#endif
if(BOOST_ARCHIVE_VERSION() < input_library_version)