Opened 15 years ago

Closed 15 years ago

#1143 closed Bugs (fixed)

Archive headers appear to be missing multiple(?) include files

Reported by: anonymous Owned by: Robert Ramey
Milestone: Boost 1.35.0 Component: serialization
Version: Boost 1.34.1 Severity: Regression
Keywords: Cc:

Description

Here is my test program:

#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

int main(void)
{
        return 0;
}

Here are the first few lines of gcc output:

../boost/boost/boost/archive/basic_binary_iprimitive.hpp:72: error: ISO C++ forbids declaration of ‘scoped_ptr’ with no type
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:72: error: invalid use of ‘::’
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:72: error: expected ‘;’ before ‘<’ token
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:73: error: ISO C++ forbids declaration of ‘basic_streambuf_locale_saver’ with no type
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:73: error: expected ‘;’ before ‘<’ token
../boost/boost/boost/archive/basic_binary_iprimitive.hpp: In member function ‘void boost::archive::boost::archive::basic_binary_iprimitive<Archive, Elem, Tr>
::load_binary(void*, size_t)’:
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:150: error: ‘throw_exception’ is not a member of ‘boost::archive::boost’

It looks to my untrained eye that there could be several includes missing, or perhaps some circular including going on.

I am using an ubuntu 7.04 distribution, gcc 4.1.2, etc. I am building boost myself. I am upgrading from boost 1.32.0, under which I did not experience this problem.

Benjamin.

Change History (2)

in reply to:  description comment:1 by anonymous, 15 years ago

This is the problem which is related to the miss place close braces in boost/archive/basic_streambuf_locale_saver.hpp To fix the problem, simply move the namespace close braces into the #endif for BOOST_NO_STD_LOCALE. (this works only with the machine with <locale>, otherwise, more fixes are required.)
Cheers.
Shirley

Replying to anonymous:

Here is my test program:

#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

int main(void)
{
        return 0;
}

Here are the first few lines of gcc output:

../boost/boost/boost/archive/basic_binary_iprimitive.hpp:72: error: ISO C++ forbids declaration of ‘scoped_ptr’ with no type
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:72: error: invalid use of ‘::’
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:72: error: expected ‘;’ before ‘<’ token
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:73: error: ISO C++ forbids declaration of ‘basic_streambuf_locale_saver’ with no type
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:73: error: expected ‘;’ before ‘<’ token
../boost/boost/boost/archive/basic_binary_iprimitive.hpp: In member function ‘void boost::archive::boost::archive::basic_binary_iprimitive<Archive, Elem, Tr>
::load_binary(void*, size_t)’:
../boost/boost/boost/archive/basic_binary_iprimitive.hpp:150: error: ‘throw_exception’ is not a member of ‘boost::archive::boost’

It looks to my untrained eye that there could be several includes missing, or perhaps some circular including going on.

I am using an ubuntu 7.04 distribution, gcc 4.1.2, etc. I am building boost myself. I am upgrading from boost 1.32.0, under which I did not experience this problem.

Benjamin.

comment:2 by Robert Ramey, 15 years ago

Milestone: To Be DeterminedBoost 1.35.0
Resolution: fixed
Status: newclosed

fixed in next release

Note: See TracTickets for help on using tickets.