intel-win32 8.x config/ADL problem

Check it out, I can't get the following program to compile, even with -Qoption,c,--arg_dep_lookup: namespace ns1 { class X{}; int swap(X&, X&); } namespace ns2 { template <class T> void swap(T&, T&); } int main() { ns1::X x; using ns2::swap; int y = swap(x,x); } Shouldn't we be setting BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL for this compiler? It's actually a different bug in some details, I realize, but the macro does say the right thing. Also, where is the test for that macro? I don't see any in libs/config/test. -- Dave Abrahams Boost Consulting www.boost-consulting.com

David Abrahams <dave@boost-consulting.com> writes:
Check it out, I can't get the following program to compile, even with -Qoption,c,--arg_dep_lookup:
namespace ns1 { class X{}; int swap(X&, X&); }
namespace ns2 { template <class T> void swap(T&, T&); }
int main() { ns1::X x; using ns2::swap; int y = swap(x,x); }
Shouldn't we be setting BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL for this compiler? It's actually a different bug in some details, I realize, but the macro does say the right thing.
OK, silly me: it looks like we *do* set that macro for intel-win32. Since the latest version of that compiler is version 8, why are we writing: #if (BOOST_INTEL_CXX_VERSION <= 800) || !defined(BOOST_STRICT_CONFIG) instead of #if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(800)) ??
Also, where is the test for that macro? I don't see any in libs/config/test.
I still wanna know. Thanks, -- Dave Abrahams Boost Consulting www.boost-consulting.com

OK, silly me: it looks like we *do* set that macro for intel-win32.
Since the latest version of that compiler is version 8, why are we writing:
#if (BOOST_INTEL_CXX_VERSION <= 800) || !defined(BOOST_STRICT_CONFIG)
instead of
#if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(800))
??
Because the config system normally gets parsed before boost/detail/workaround.hpp can be included? John.

Shouldn't we be setting BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL for this compiler? It's actually a different bug in some details, I realize, but the macro does say the right thing.
Also, where is the test for that macro? I don't see any in
libs/config/test. Well a quick grep would have found boost_no_using_breaks_adl.cxx and it's associated cpp test files. Have you reported this one as a bug to Intel? John.

"John Maddock" <john@johnmaddock.co.uk> writes:
Shouldn't we be setting BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL for this compiler? It's actually a different bug in some details, I realize, but the macro does say the right thing.
Also, where is the test for that macro? I don't see any in libs/config/test.
Well a quick grep would have found boost_no_using_breaks_adl.cxx and it's associated cpp test files.
Have you reported this one as a bug to Intel?
I don't remember. Probably. I think they just claimed "vcxxx bug compatibility" and went back to sleep ;-) -- Dave Abrahams Boost Consulting http://www.boost-consulting.com

Check it out, I can't get the following program to compile, even with -Qoption,c,--arg_dep_lookup:
Dave, are you sure about this? I've just tested your test case and mine, and both compile with Intel 8 just fine in both VC7.1 compatibility mode, and in strict ANSI mode. I'm using compiler build: Intel(R) C++ Compiler for 32-bit applications, Version 8.0 Build 20040318Z Package ID: W_CC_PC_8.0.048 Which is the latest release I believe. John.

"John Maddock" <john@johnmaddock.co.uk> writes:
Check it out, I can't get the following program to compile, even with -Qoption,c,--arg_dep_lookup:
Dave, are you sure about this? I've just tested your test case and mine, and both compile with Intel 8 just fine in both VC7.1 compatibility mode, and in strict ANSI mode. I'm using compiler build:
Please, what are the command lines you're using? Incidentally, I've been using /ms0 as supplied by my intel-win32 toolset, but we ought to set that up to yield the most conformant behavior possible. Also, we ought to find a way to ensure that BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL is set properly based on the capabilities of the compiler under whatever configuration's in use.
Intel(R) C++ Compiler for 32-bit applications, Version 8.0 Build 20040318Z Package ID: W_CC_PC_8.0.048
Which is the latest release I believe.
OK; I need to download that one I think. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com

Please, what are the command lines you're using?
I'm using the IDE, so the command lines end up as: icl /c /Qvc7.1 /Qlocation,link,"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\\bin" /Od /Gm /EHsc /RTC1 /MLd /Za /ZI /nologo /W3 /Wp64 /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Fo"Debug/" /Fd"Debug/vc70.pdb" /Gd /TP filename.cpp
Incidentally, I've been using /ms0 as supplied by my intel-win32 toolset, but we ought to set that up to yield the most conformant behavior possible.
Also, we ought to find a way to ensure that BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL is set properly based on the capabilities of the compiler under whatever configuration's in use.
Sure, but I don't think we can detect Intel patch levels, which is what this one may well come down too... John.
participants (2)
-
David Abrahams
-
John Maddock