Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-06-02 09:01:54


I just checked in changes to the intel-win32-tools.jam file which
enable argument-dependent lookup for all versions, since we were were
incorrectly operating as though it was enabled for v7.1 anyway. I
think we are still out-of-synch with the config, though. The config
for the intel compiler contains:

# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)

      // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup
      // in the frontend even in "strict" mode, unless you use
      // -Qoption,cpp,--arg_dep_lookup. (reported by Kirk Klobe & Thomas Witt)
      // Similarly, -Qoption,cpp,--new_for_init enables new-style "for" loop
      // variable scoping. (reported by Thomas Witt)
      // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end
      // changes at all. (reported by Kirk Klobe)
      // That can't be right, since it supports template template
      // arguments (reported by Dave Abrahams)
# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# endif
# define BOOST_NO_SWPRINTF
# endif

I have two questions about this:

1. Is there a reason we're checking _MSC_VER here?

2. Can we just eliminate the #define for
   BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP?

I ran the config tests for intel 5,6,7 and got the following
interesting results, but I am at a loss to interpret them. Do the
link errors with Intel7 mean that we failed to get the whchar_t
support settings right? Some of those symbols only deal with char,
so...

What does it mean that intel5,6 still report
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP? I don't know what to do with
this information.

myjam -sTOOLS="intel5 intel6 intel7" --verbose-test config

  ...

vc-C++ c:\build\status\bin\config_test.test\intel5\debug\runtime-link-dynamic\threading-multi\config_test.obj
config_test.cpp
c:\\boost\\libs/config/test/boost_no_excep_std.cxx(18): error: namespace "std" has no member "terminate"
        std::terminate();
             ^

compilation aborted for c:\boost\libs/config/test/config_test.cpp (code 2)

execute-test c:\build\status\bin\config_test.test\intel6\debug\runtime-link-dynamic\threading-multi\config_test.run
        1 file(s) copied.
====== BEGIN OUTPUT ======

*** No errors detected
====== END OUTPUT ======

vc-Link c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe
xilink: executing 'link'
   Creating library c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.lib and object c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exp
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<char,1>::intl" (?intl@?$moneypunct_at_D$00_at_std@@2_NB)
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<char,0>::intl" (?intl@?$moneypunct_at_D$0A@@std@@2_NB)
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<wchar_t,1>::intl" (?intl@?$moneypunct@_W$00_at_std@@2_NB)
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<wchar_t,0>::intl" (?intl@?$moneypunct@_W$0A@@std@@2_NB)
c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe : fatal error LNK1120: 4 unresolved externals

    CALL "c:/tools/intel/compiler70/ia32/bin/ICCVARS.BAT" > nul
    "c:/tools/intel/compiler70/ia32/bin/xilink" /nologo /DEBUG /subsystem:console /out:"c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe" @"c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.CMD"

...failed vc-Link c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe...
...skipped <status\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi>config_test.run for lack of <status\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi>config_test.exe...

...

execute-test c:\build\status\bin\config_info.test\intel5\debug\runtime-link-dynamic\config_info.run
        1 file(s) copied.
====== BEGIN OUTPUT ======
Intel C++ version 500
    _CPPUNWIND =1
    __cplusplus =1
    _M_IX86 =600
    _WIN32 =1
    _WCHAR_T_DEFINED [no value]
    _CPPRTTI =1
    _DLL =1
    _MSC_EXTENSIONS =1
    _MSC_VER =1200
    _MT =1
    __EXCEPTIONS =1
    __EDG__ =1
    __EDG_VERSION__ =245
    __SIGNED_CHARS__ =1
    __ARRAY_OPERATORS =1
    __BOOL_DEFINED =1
    __RTTI =1
    __PLACEMENT_DELETE =1
    __ICL =500
    __INTEL_COMPILER =500

*********************************************************************

Dinkumware standard library version 1.x

*********************************************************************

Detected Platform: Win32
    Type char is signed
    Type wchar_t is unsigned
    byte order for type short =0 8
    byte order for type int =0 8 16 24
    byte order for type long =0 8 16 24
    sizeof(wchar_t) =2
    sizeof(short) =2
    sizeof(int) =4
    sizeof(long) =4
    sizeof(float) =4
    sizeof(double) =8
    sizeof(long double) =8
    CHAR_BIT =8
    CHAR_MAX =127
    WCHAR_MAX =((wchar_t)-1)
    SHRT_MAX =32767
    INT_MAX =2147483647
    LONG_MAX =2147483647L

*********************************************************************

Boost version 103100
    BOOST_USER_CONFIG =<boost/config/user.hpp>
    BOOST_COMPILER_CONFIG ="boost/config/compiler/intel.hpp"
    BOOST_STDLIB_CONFIG ="boost/config/stdlib/dinkumware.hpp"
    BOOST_PLATFORM_CONFIG ="boost/config/platform/win32.hpp"
    BOOST_DEDUCED_TYPENAME =typename
    BOOST_HAS_FTIME [no value]
    BOOST_HAS_LONG_LONG [no value]
    BOOST_HAS_MACRO_USE_FACET [no value]
    BOOST_HAS_MS_INT64 [no value]
    BOOST_HAS_THREADS [no value]
    BOOST_HAS_WINTHREADS [no value]
    BOOST_INTEL =500
    BOOST_MSVC_STD_ITERATOR =1
    BOOST_MSVC6_MEMBER_TEMPLATES [no value]
    BOOST_NESTED_TEMPLATE =template
    BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP [no value]
    BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS [no value]
    BOOST_NO_HASH [no value]
    BOOST_NO_INTEGRAL_INT64_T [no value]
    BOOST_NO_INTRINSIC_WCHAR_T [no value]
    BOOST_NO_MS_INT64_NUMERIC_LIMITS [no value]
    BOOST_NO_SLIST [no value]
    BOOST_NO_STD_ALLOCATOR [no value]
    BOOST_NO_STD_ITERATOR [no value]
    BOOST_NO_STD_ITERATOR_TRAITS [no value]
    BOOST_NO_STD_MIN_MAX [no value]
    BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN [no value]
    BOOST_NO_STD_USE_FACET [no value]
    BOOST_NO_STDC_NAMESPACE [no value]
    BOOST_NO_SWPRINTF [no value]
    BOOST_NO_TEMPLATE_TEMPLATES [no value]
    BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS [no value]
    BOOST_NO_VOID_RETURNS [no value]
    BOOST_STD_EXTENSION_NAMESPACE =std
    BOOST_UNREACHABLE_RETURN(0) [no value]
====== END OUTPUT ======
**passed** c:\build\status\bin\config_info.test\intel5\debug\runtime-link-dynamic\config_info.test

...

execute-test c:\build\status\bin\config_info.test\intel6\debug\runtime-link-dynamic\config_info.run
        1 file(s) copied.
====== BEGIN OUTPUT ======
Intel C++ version 600
    _CPPUNWIND =1
    __cplusplus =1
    _M_IX86 =600
    _WIN32 =1
    _CPPRTTI =1
    _DLL =1
    _MSC_EXTENSIONS =1
    _MSC_VER =1300
    _MT =1
    _NATIVE_WCHAR_T_DEFINED =1
    __EXCEPTIONS =1
    __EDG__ =1
    __EDG_VERSION__ =245
    __SIGNED_CHARS__ =1
    __ARRAY_OPERATORS =1
    __BOOL_DEFINED =1
    __RTTI =1
    __PLACEMENT_DELETE =1
    __ICL =600
    __INTEL_COMPILER =600

*********************************************************************

Dinkumware standard library version 310
    _CPPLIB_VER =310
    _HAS_EXCEPTIONS =1
    _HAS_TEMPLATE_PARTIAL_ORDERING =0

*********************************************************************

Detected Platform: Win32
    Type char is signed
    Type wchar_t is unsigned
    byte order for type short =0 8
    byte order for type int =0 8 16 24
    byte order for type long =0 8 16 24
    sizeof(wchar_t) =2
    sizeof(short) =2
    sizeof(int) =4
    sizeof(long) =4
    sizeof(float) =4
    sizeof(double) =8
    sizeof(long double) =8
    CHAR_BIT =8
    CHAR_MAX =127
    WCHAR_MAX =((wchar_t)-1)
    SHRT_MAX =32767
    INT_MAX =2147483647
    LONG_MAX =2147483647L

*********************************************************************

Boost version 103100
    BOOST_USER_CONFIG =<boost/config/user.hpp>
    BOOST_COMPILER_CONFIG ="boost/config/compiler/intel.hpp"
    BOOST_STDLIB_CONFIG ="boost/config/stdlib/dinkumware.hpp"
    BOOST_PLATFORM_CONFIG ="boost/config/platform/win32.hpp"
    BOOST_DEDUCED_TYPENAME =typename
    BOOST_HAS_FTIME [no value]
    BOOST_HAS_LONG_LONG [no value]
    BOOST_HAS_MS_INT64 [no value]
    BOOST_HAS_NRVO [no value]
    BOOST_HAS_PARTIAL_STD_ALLOCATOR [no value]
    BOOST_HAS_THREADS [no value]
    BOOST_HAS_WINTHREADS [no value]
    BOOST_INTEL =600
    BOOST_MSVC6_MEMBER_TEMPLATES [no value]
    BOOST_NESTED_TEMPLATE =template
    BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP [no value]
    BOOST_NO_HASH [no value]
    BOOST_NO_SLIST [no value]
    BOOST_NO_STD_ITERATOR_TRAITS [no value]
    BOOST_NO_STD_LOCALE [no value]
    BOOST_NO_STD_MESSAGES [no value]
    BOOST_NO_STD_USE_FACET [no value]
    BOOST_NO_STD_WSTREAMBUF [no value]
    BOOST_NO_SWPRINTF [no value]
    BOOST_STD_EXTENSION_NAMESPACE =std
    BOOST_UNREACHABLE_RETURN(0) [no value]
====== END OUTPUT ======
**passed** c:\build\status\bin\config_info.test\intel6\debug\runtime-link-dynamic\config_info.test

...

execute-test c:\build\status\bin\config_info.test\intel7\debug\runtime-link-dynamic\config_info.run
        1 file(s) copied.
====== BEGIN OUTPUT ======
Intel C++ version 700
    _CPPUNWIND =1
    __cplusplus =1
    _M_IX86 =700
    _WIN32 =1
    _CPPRTTI =1
    _DLL =1
    _MSC_EXTENSIONS =1
    _MSC_VER =1310
    _MT =1
    _NATIVE_WCHAR_T_DEFINED =1
    __EXCEPTIONS =1
    __EDG__ =1
    __EDG_VERSION__ =300
    __SIGNED_CHARS__ =1
    __ARRAY_OPERATORS =1
    __BOOL_DEFINED =1
    __RTTI =1
    __PLACEMENT_DELETE =1
    __ICL =700
    __INTEL_COMPILER =700

*********************************************************************

Dinkumware standard library version 313
    _CPPLIB_VER =313
    _GLOBAL_USING =1
    _HAS_EXCEPTIONS =1

*********************************************************************

Detected Platform: Win32
    Type char is signed
    Type wchar_t is unsigned
    byte order for type short =0 8
    byte order for type int =0 8 16 24
    byte order for type long =0 8 16 24
    sizeof(wchar_t) =2
    sizeof(short) =2
    sizeof(int) =4
    sizeof(long) =4
    sizeof(float) =4
    sizeof(double) =8
    sizeof(long double) =8
    CHAR_BIT =8
    CHAR_MAX =127
    WCHAR_MAX =((wchar_t)-1)
    SHRT_MAX =32767
    INT_MAX =2147483647
    LONG_MAX =2147483647L
    LLONG_MAX =0x7fffffffffffffff
    ULLONG_MAX =0xffffffffffffffff

*********************************************************************

Boost version 103100
    BOOST_USER_CONFIG =<boost/config/user.hpp>
    BOOST_COMPILER_CONFIG ="boost/config/compiler/intel.hpp"
    BOOST_STDLIB_CONFIG ="boost/config/stdlib/dinkumware.hpp"
    BOOST_PLATFORM_CONFIG ="boost/config/platform/win32.hpp"
    BOOST_DEDUCED_TYPENAME =typename
    BOOST_HAS_FTIME [no value]
    BOOST_HAS_LONG_LONG [no value]
    BOOST_HAS_MS_INT64 [no value]
    BOOST_HAS_NRVO [no value]
    BOOST_HAS_PARTIAL_STD_ALLOCATOR [no value]
    BOOST_HAS_THREADS [no value]
    BOOST_HAS_WINTHREADS [no value]
    BOOST_INTEL =700
    BOOST_MSVC6_MEMBER_TEMPLATES [no value]
    BOOST_NESTED_TEMPLATE =template
    BOOST_NO_HASH [no value]
    BOOST_NO_SLIST [no value]
    BOOST_NO_SWPRINTF [no value]
    BOOST_STD_EXTENSION_NAMESPACE =std
    BOOST_UNREACHABLE_RETURN(0) [no value]
====== END OUTPUT ======
**passed** c:\build\status\bin\config_info.test\intel7\debug\runtime-link-dynamic\config_info.test

vc-C++ c:\build\status\bin\limits_test.test\intel5\debug\runtime-link-dynamic\limits_test.obj
limits_test.cpp
c:\\boost\\libs/config/test/limits_test.cpp(68): error: more than one operator "<<" matches these operands:
            function "std::basic_ostream<_E, _Tr>::operator<<(std::_Bool={bool={bool}}) [with _E=char, _Tr=std::char_traits<char>]"

<snip>

            operand types are: std::basic_ostream<char, std::char_traits<char>> << __int64
              << " min: " << make_char_numeric_for_streaming(lim::min())
                          ^
          detected during instantiation of "void test_integral_limits(const T &, const char *) [with T=__int64]"
...failed vc-C++
              c:\build\status\bin\limits_test.test\intel5\debug\runtime-link-dynamic\limits_test.obj...

execute-test c:\build\status\bin\limits_test.test\intel6\debug\runtime-link-dynamic\limits_test.run
        1 file(s) copied.
====== BEGIN OUTPUT ======
Testing bool (size 1) min: 0, max: 1
Testing char (size 1) min: -128, max: 127
Testing signed char (size 1) min: -128, max: 127
Testing unsigned char (size 1) min: 0, max: 255
Testing wchar_t (size 2) min: 0, max: 65535
Testing short (size 2) min: -32768, max: 32767
Testing unsigned short (size 2) min: 0, max: 65535
Testing int (size 4) min: -2147483648, max: 2147483647
Testing unsigned int (size 4) min: 0, max: 4294967295
Testing long (size 4) min: -2147483648, max: 2147483647
Testing unsigned long (size 4) min: 0, max: 4294967295
Testing long long (size 8) min: -9223372036854775808, max: 9223372036854775807
Testing unsigned long long (size 8) min: 0, max: 18446744073709551615
Testing __int64 (size 8) min: -9223372036854775808, max: 9223372036854775807
Testing unsigned __int64 (size 8) min: 0, max: 18446744073709551615

Testing float
IEEE-compatible: 1, traps: 1, bounded: 1, exact: 0
min: 1.17549e-038, max: 3.40282e+038
infinity: 1.#INF, QNaN: -1.#IND
hex value of max is: ffff7f7f
hex value of infinity is: 0000807f
hex value of qnan is: 0000c0ff
hex value of snan is: 0000c0ff

Testing double
IEEE-compatible: 1, traps: 1, bounded: 1, exact: 0
min: 2.22507e-308, max: 1.79769e+308
infinity: 1.#INF, QNaN: -1.#IND
hex value of max is: ffffffffffffef7f
hex value of infinity is: 000000000000f07f
hex value of qnan is: 000000000000f8ff
hex value of snan is: 000000000000f8ff

Testing long double
IEEE-compatible: 1, traps: 1, bounded: 1, exact: 0
min: 2.22507e-308, max: 1.79769e+308
infinity: 1.#INF, QNaN: -1.#IND
hex value of max is: ffffffffffffef7f
hex value of infinity is: 000000000000f07f
hex value of qnan is: 000000000000f8ff
hex value of snan is: 000000000000f8ff

*** No errors detected
====== END OUTPUT ======
**passed** c:\build\status\bin\limits_test.test\intel6\debug\runtime-link-dynamic\limits_test.test
...failed updating 3 targets...
...skipped 10 targets...
...updated 117 targets...

Compilation exited abnormally with code 1 at Mon Jun 02 09:46:00

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

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