Boost C++ Libraries: Ticket #5672: Intel compiler failure with BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF https://svn.boost.org/trac10/ticket/5672 <p> Attempting to use the Intel 11.1 or 12.0 compiler to test the existence of a nested template using the macro BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF results in a compiler error. When running the has_xxx.cpp MPL test against Intel 12.0, the error message is: </p> <p> "has_xxx.cpp(20): error: more than one instance of overloaded function "has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" matches the argument list: </p> <blockquote> <p> function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute0&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute1&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute2&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute3&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute4&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" argument types are: (int) </p> </blockquote> <blockquote> <p> BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(has_xxx_template, xxx, false) <sup> </sup></p> <blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt; [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" at line 20 instantiation of class "has_xxx_template&lt;T, fallback_&gt; [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;]" at line 148 of "../../../boost/mpl/assert.hpp" instantiation of class "boost::mpl::assert_arg_pred_not&lt;P&gt; [with P=has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;]" at line 82" </p> </blockquote> </blockquote> </blockquote> <p> The Intel 11.1 compiler has the same error. </p> <p> John Maddock has reported this to Intel as Intel support ID <a class="missing ticket">#635997</a>. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/5672 Trac 1.4.3