Compilation errors in Boost.Mpl with Microsoft Compiler ver.13.10.2240.8 for IA-64

HI All, I am getting compilation errors using Microsoft (R) C/C++ Optimizing Compiler Version 13.10.2240.8 for IA-64 The compiler is shipped with Windows DDK (WINDDK\3790\bin\ia64). The same code compiles perfectly well with 32 bit Microsoft compiler (13.10.2179.0) The Boost version is 1.32.0 Is it a known issue with the compiler? Is there a workaround? Content of the StdAfx.h file which is being compiled as a the pre-compiled header is: #include <boost/multi_index_container.hpp> #include <boost/multi_index/member.hpp> #include <boost/multi_index/ordered_index.hpp> #include <boost/multi_index/mem_fun.hpp> #include <boost/multi_index/composite_key.hpp> #include <boost/shared_ptr.hpp> #include <boost/intrusive_ptr.hpp> #include <boost/functional.hpp> #include <boost/variant.hpp> #include <boost/ref.hpp> The following is the compiler output: P'nmake.exe /c BUILDMSG=Stop. -i NTTEST= UMTEST= NOLINK=1 NOPASS0=1 IA64=1' cl -nologo -Iia64\ -I. -IC:\WINDDK\3790\inc\mfc42 -IC:\WINDDK\3790\inc\atl30 -I\include -IC:\WINDDK\3790\inc\ddk\wnet IC:\WINDDK\3790\inc\crt C:\WINDDK\3790 \inc\wnet\crt\stl60 -D_WIN64 -D_IA64_=1 -DIA64=1 -DNO_HW_DETECT -D_MSC_EXTENSIONS -DCONDITION_HANDLING=1 -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 -DWINNT=1 -D_WIN32_WINNT=0x0502 /DWINVER=0x0502 -D_WIN32_IE=0x0600 -D_MERCED_A0_=1 -DDEVL=1 -D__BUILDMACHINE__=WinDDK -DFPO=0 -DNDEBUG -D_DLL=1 -D_MT=1 -DUNICODE -D_UNICODE -DNOATLNAMESPACE /D_ATL_DLL /c /Zel /Zp8 /Gy /Gi- /W3 /Wp64 /GX /GR /Zi /Od /d2QIA64_fr32 /FdC:\main\SWSvc\objfre_wnet_IA64\ia64\ - FIC:\WINDDK\3790\inc\wnet\warning.h /YlSWSvc /Ycstdafx.h /Fpobjfre_wnet_IA64\ia64\stdafx.pch /Fo"C:\objfre_wnet_IA64\ia64\_stdafx.obj" /Tp #include "stdafx.h" pch_hdr.src \boost-1_32\boost\mpl\if.hpp(63) : error C2226: syntax error : unexpected type 'value' \boost-1_32\boost\mpl\if.hpp(73) : see reference to class template instantiation 'boost::mpl::if_<T1,T2,T3>' being compiled \boost-1_32\boost\mpl\if.hpp(63) : error C2144: syntax error : 'value' should be preceded by '(' \boost-1_32\boost\mpl\if.hpp(67) : error C2976: 'boost::mpl::if_c' : too few template arguments \boost-1_32\boost\mpl\if.hpp(37) : see declaration of 'boost::mpl::if_c' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(21) : error C2143: syntax error : missing ')' before '>' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(28) : see reference to class template instantiation 'boost::mpl::less_impl<Tag1,Tag2>' being compiled \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(21) : error C2059: syntax error : '>' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(26) : error C2947: expecting '>' to terminate template-argument-list, found '>' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(26) : error C2976: 'boost::mpl::if_c' : too few template arguments \boost-1_32\boost\mpl\if.hpp(37) : see declaration of 'boost::mpl::if_c' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(87) : error C2143: syntax error : missing ')' before '>' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(89) : see reference to class template instantiation 'boost::mpl::less_impl<Tag1,Tag2>::apply<N1,N2>' being compiled with [ Tag1=boost::mpl::integral_c_tag, Tag2=boost::mpl::integral_c_tag ] \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(87) : error C2059: syntax error : '>' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(88) : error C2143: syntax error : missing ';' before '{' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(89) : error C2143: syntax error : missing ';' before '}' \boost-1_32\boost\mpl\aux_\preprocessed\plain\less.hpp(89) : fatal error C1004: unexpected end of file found Thank you, Sergey Serokurov

Sergey Serokurov <serg67 <at> yahoo.com> writes:
HI All,
I am getting compilation errors using Microsoft (R) C/C++ Optimizing Compiler Version 13.10.2240.8 for IA-64 The compiler is shipped with Windows DDK (WINDDK\3790\bin\ia64). The same code compiles perfectly well with 32 bit Microsoft compiler (13.10.2179.0)
Which compiler does this version number correspond to? MSVC++ 6.5 or 7.0? and the 64-bit version?
The Boost version is 1.32.0 Is it a known issue with the compiler? Is there a workaround?
It could be the case that MPL is not properly handling this exotic 64-bit compiler. Try globally defining one of the following macros: BOOST_MPL_CFG_MSVC_60_ETI_BUG BOOST_MPL_CFG_MSVC_70_ETI_BUG to see if things improve. HTH Joaquín M López Muñoz Telefónica, Investigación y Desarrollo

On 7/29/05, Joaquin M Lopez Munoz <joaquin@tid.es> wrote:
Which compiler does this version number correspond to? MSVC++ 6.5 or 7.0? and the 64-bit version?
MSVC 7.1 (for both of them) - MSVC6 = 12.0, MSVC7=13.0, MSVC7.1=13.10
Joaquín M López Muñoz Telefónica, Investigación y Desarrollo
Staurt Dootson

--- Joaquin M Lopez Munoz <joaquin@tid.es> wrote:
Try globally defining one of the following macros:
BOOST_MPL_CFG_MSVC_60_ETI_BUG BOOST_MPL_CFG_MSVC_70_ETI_BUG
to see if things improve. HTH
These definitions haven't help, thanks for the advice though. We are going to switch to a newer compiler which does not exhibit this problem: Microsoft (R) C/C++ Optimizing Compiler Version 14.00.40310.39 for IA-64. It is shipped with Windows DDK for Windows Server 2003 SP1 (3790.1830) Regards, Sergey Serokurov.
participants (3)
-
Joaquin M Lopez Munoz
-
Sergey Serokurov
-
Stuart Dootson