Boost C++ Libraries: Ticket #2107: Preprocessor Token Conflict with Intel Math Kernel Library (MKL) https://svn.boost.org/trac10/ticket/2107 <p> A very obscure bug just cropped up in our code when we moved to Boost 1.35 from 1.34.1. We use VSPL++, which uses LAPACK, which is provided in our installation by Intel's Math Kernel Library (MKL). After including &lt;vsip/math.hpp&gt; which brings in the LAPACK and MKL stuff, we cannot compile code using Boost routines that uses stuff from &lt;boost/mpl&gt;. In particular, we get a compile failure in various files found in the &lt;boost/mpl/aux_/preprocessed&gt; directory that have templates with a parameter called P4. This is defined in an MKL header to have the value 2 on our machine, which makes the template useless. </p> <p> I doubt that I can get Intel to not pollute the token space with 'P4'. I will try and get the VSIPL++ coders to '#undef P4' in a key spot in their code, and might be able to convince them that it would be OK to do so. But I was wondering if general uglification is necessary in the Boost code to reduce this type of problem in the future. I'll understand if the answer is "No" and this is rejected. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/2107 Trac 1.4.3 anonymous Wed, 11 Mar 2009 20:31:43 GMT <link>https://svn.boost.org/trac10/ticket/2107#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2107#comment:1</guid> <description> <p> I wonder why Intel wouldn't agree to depollute the token namespace.. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Noel Belcourt</dc:creator> <pubDate>Mon, 28 Dec 2009 18:11:55 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/2107#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2107#comment:2</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/2107#comment:1" title="Comment 1">anonymous</a>: </p> <blockquote class="citation"> <p> I wonder why Intel wouldn't agree to depollute the token namespace.. </p> </blockquote> <p> Brad, </p> <p> With Intel 11.1.046 on my Leopard system I have no problem compiling MKL lapack headers and files from MPL. Can you provide more information such as the OS, compiler, which version of MKL, and whether this is still a problem with 1.41? </p> <p> -- Noel </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Marshall Clow</dc:creator> <pubDate>Mon, 01 Nov 2010 03:00:10 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/2107#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2107#comment:3</guid> <description> <p> Noel -- </p> <p> If you never got an answer back, and the problem no longer occurs, can we close this bug? I see that the MPL stuff still uses template parameters P4, so I'm wondering: Is the MLK still #define-ing P4? </p> </description> <category>Ticket</category> </item> <item> <author>kbelco@…</author> <pubDate>Wed, 03 Nov 2010 03:29:06 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/2107#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/2107#comment:4</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/2107#comment:3" title="Comment 3">marshall</a>: </p> <blockquote class="citation"> <p> Noel -- </p> <p> If you never got an answer back, and the problem no longer occurs, can we close this bug? I see that the MPL stuff still uses template parameters P4, so I'm wondering: Is the MLK still #define-ing P4? </p> </blockquote> <p> Hi Marshall, </p> <p> I didn't get a response so I'd say close this issue. I haven't checked if MKL defines P4. </p> <p> -- Noel </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Sat, 27 Nov 2010 08:13:59 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/2107#comment:5 https://svn.boost.org/trac10/ticket/2107#comment:5 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> <p> Closed as it seems Intel has removed the P4 macro. </p> Ticket