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
* BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL is defined
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 http://tinyurl.com/8f5g6
One piece of code where the error pops up is like this
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)!!
* The fact that the test passes under Intel 9.0 for
Win32, for which BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
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 acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk