I couldn't get BOOST_STATIC_WARNING to work for intel compilers.
 
In later boost version it evaluates to nothing for this compiler. If you
update to 1.37 or modify your own version of the library accordingly
ths will fix the problem.
 
If you can make BOOST_STATIC_WARNING work for this compiler
so much the better.
 
Robert Ramey
 
"Steve Nolen" <drnuke@lanl.gov> wrote in message news:491C7074.1000306@lanl.gov...
simple code...
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

#include <iostream>
#include <sstream>

using namespace std;

template<typename T>
class Vector3D {
public:
   T data[ 3 ];
   Vector3D( double d1, double d2, double d3 ) {
       data[ 0 ] = d1;
       data[ 1 ] = d2;
       data[ 2 ] = d3;
   }
   Vector3D( void ) {
       data[ 0 ] = 0;
       data[ 1 ] = 0;
       data[ 2 ] = 0;
   }
   template<typename Archive>
   void serialize( Archive& ar, unsigned int ) { ar & data; }
};

int main( int argc, char* argv[] )
{
   stringstream ss;
   Vector3D<double> v1( 10, 20, 30 );
   {
       boost::archive::text_oarchive oa( ss );
       oa << v1;
   }

   Vector3D<double> v2;
   assert( v1.data[0] != v2.data[0] );
   {
       boost::archive::text_iarchive ia( ss );
       ia >> v2;
   }

   assert( v1.data[0] == v2.data[0] );
   return 0;

}

on g++ this works fine (gcc 3.4.4 and gcc 4.0.1)

on intel 10.0.023 and 9.??, i get...

prompt> icc -I{boost 1.36 header dir} simple.cc

/usr/projects/packages/include/boost/archive/detail/oserializer.hpp(536): error: nontype "boost::static_warning_impl<<unnamed>>::type [with <unnamed>=(bool)boost::archive::check_tracking<T>::value]" is not a type name
     BOOST_STATIC_WARNING(check_tracking<T>::value);
     ^
         detected during:
           instantiation of "void boost::archive::detail::common_oarchive<Archive>::save_override(T &, int) [with Archive=boost::archive::text_oarchive, T=Vector3D<double>]" at line 75 of "/usr/projects/packages/include/boost/archive/basic_text_oarchive.hpp"
           instantiation of "void boost::archive::basic_text_oarchive<Archive>::save_override(T &, int) [with Archive=boost::archive::text_oarchive, T=Vector3D<double>]" at line 64 of "/usr/projects/packages/include/boost/archive/detail/interface_oarchive.hpp"
           instantiation of "Archive &boost::archive::detail::interface_oarchive<Archive>::operator<<(T &) [with Archive=boost::archive::text_oarchive, T=Vector3D<double>]" at line 33 of "simple.cc"

compilation aborted for simple.cc (code 2)



_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users