Boost logo

Boost :

From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2003-06-25 12:24:16


Beman Dawes wrote:
> Intel's 7.1 upgrade doesn't bump their release macro! It is still
> reporting 700.
>
> I tried to update to use Intel 7.1 with VC++ 7.1, but am getting
> strange results. The IDE integration doesn't seem to provide a way to
> switch to the Intel compiler. Boost tests are getting weird link
> failures. No std::endl for example. Either the Intel release isn't
> ready for VC++ 7.1 (in spite of claims to the contrary) or I've done
> something stupid.
>
> Which VC++ version are you integrating Intel with? Have you gotten it
> to work with VC++ 7.1?
>

Currently ours is configured to integrate (and be compatible with) MSVC
6.0. We didn't try anything else (yet).

> Also, your setup is confusing the bjam automatic version deduction.

If you mean all those 'wchar_t'-related failures, it doesn't have
anything to do with the bjam version deduction - it's
"boost/config/compiler/intel.hpp" that is at fault here. As per
http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864, a
standalone Intel C++ 7.x does not automatically define _WCHAR_T_DEFINED
macro, but then checking just for that one to determine whether we need
to set BOOST_NO_INTRINSIC_WCHAR_T is not enough, because the former one
is also getting defined in Dinkumware's <cstddef> header, so currently
the success of the compilation on Intel 7.x in VC6 compatibility mode
very much depends on the order of includes of various boost headers. For
instance, this one-liner compiles:

  #include "boost/type_trais/is_integral.hpp"

but this one already does not:

  #include <cstddef>
  #include "boost/type_trais/is_integral.hpp"

Since the toolset automatically, through the command line, defines
_NATIVE_WCHAR_T_DEFINED whenever '/Zc:wchar_t' is specified, I would say
that

#if BOOST_INTEL_CXX_VERSION < 700
# define BOOST_NO_INTRINSIC_WCHAR_T
#else
# ifndef _WCHAR_T_DEFINED
# define BOOST_NO_INTRINSIC_WCHAR_T
# endif
#endif

lines in "boost/config/compiler/intel.hpp" should look more like

#if BOOST_INTEL_CXX_VERSION < 700
# define BOOST_NO_INTRINSIC_WCHAR_T
#else
# if !defined(_NATIVE_WCHAR_T_DEFINED)
# define BOOST_NO_INTRINSIC_WCHAR_T
# endif
#endif

but then the file's history shows that we went through quite a few
iterations on this one, so I am not that sure.

Aleksey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk