Boost logo

Boost :

From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2005-08-06 14:02:40

A bit of context:
* Intel 9.0 has __EDG_VERSION__==304 (under Win32/Linux), whereas
prior versions of the compiler have lower values of this
for __EDG_VERSION__<=303, that is, for all Intel compilers
up to (and including) 8.1, under Win32/Linux.
* Under Win32, all Intel toolset .jams define the compiler
option --arg_dep_lookup, which explicitly enables ADL
(disabled by default.) I don't know what the situation
of ADL is for Intel under Linux, but in any case this
switch is *not* used for that OS.

Current RC tests for Intel 9.0 under Linux show
the problem listed at
One piece of code where the error pops up is like this

  using std::swap;

Given the __EDG_VERSION__ number of this compiler, it
is the second preprocessor branch that is compiled, and it
fails to use the user-supplied global swap() in favor
of std::swap(), hence the error.

However, this same tests succesfully passes for Intel 9.0
under Win32 (same __EDG_VERSION__ as the Linux case)!!

My conclusions:

* The fact that the test passes under Intel 9.0 for
is *not* defined, suggests that __EDG_VERSION__<=303
is the right check for setting this macro.
* But the same test fails under Intel 9.0 for Linux, which
hints at an ADL problem other than that controlled by

Could it be that Intel compilers under Linux also necessitate
the --arg_dep_lookup compiler switch (which is currently not
set)? This looks like the only sensible conslusion from
the facts described.

Thanks and sorry for the long post,

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo

Boost list run by bdawes at, gregod at, cpdaniel at, john at