<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Unfortunately, I dont have in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052980#M50749</link>
    <description>&lt;P&gt;I tried with intel composer xe 2013 update 3 (sp1) ( trial version as well). It gives me the same error. When I try this, it gives me no error.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;template &amp;lt;typename T, typename Time&amp;gt;
void process_info(const T info1, const T info2, const Time&amp;amp; t)  {

   const auto&amp;amp; i1s = info1.start;
   const auto&amp;amp; i2s = info2.start;
   const auto&amp;amp; i1e = info1.end;
   const auto&amp;amp; i2e = info2.end;

   if ((i2s &amp;lt; i2e) &amp;amp;&amp;amp; (i2e &amp;gt; i1s) ) {
     if ( i1e &amp;lt; i2s)
       std::cout &amp;lt;&amp;lt; "no error" &amp;lt;&amp;lt; std::endl;
  }
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 01 Jul 2014 02:03:00 GMT</pubDate>
    <dc:creator>Aniket_P_1</dc:creator>
    <dc:date>2014-07-01T02:03:00Z</dc:date>
    <item>
      <title>Unable to use boost::bind with intel MIC in a function with comparison operators</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052977#M50746</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;

&lt;P&gt;I am using a test program for compiling a boost::bind in intel MIC. Here are the details of the code and platform on which it is compiled.&amp;nbsp; I am using thread building blocks in my code, but the following code does not contain any TBB threads. The errors in my test code below and original code are same.&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;Compiler :&lt;/STRONG&gt; Intel 13.0.1. I am using our lab's compiler installed on a cluster. The TBB is installed in my home directory. boost 1.55 is also installed in my home location.&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;Compiled for MIC:&lt;/STRONG&gt; icpc -mmic -L/home/aniketnp/tbb42_20140122oss/lib/mic -std=c++11 -I/home/aniketnp/boost_1_55_0 -I/home/aniketnp/tbb42_20140122oss/include&amp;nbsp;&amp;nbsp;&amp;nbsp; test.cpp&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;Scenario:&lt;/STRONG&gt; a functor takes 2 arguments in its operator()() by using a boost::bind() method. The operator()() method contains a function which uses comparisons ( &amp;lt; or &amp;gt; ) using if-else logic. The error pops up here. Here is the following code.&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;boost/bind.hpp&amp;gt;

using namespace std;

struct Info_t {
 int start;
 int end;
 Info_t(int s=0,int e=0) : start(s), end(e) {  }
};

template &amp;lt;typename T, typename time&amp;gt;
void process_info(const T&amp;amp; info1, const T&amp;amp; info2, const time&amp;amp; t) {

 &lt;STRONG&gt; //the below gives compiler error&lt;/STRONG&gt;
  &lt;STRONG&gt;if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) &amp;amp;&amp;amp; (info1.end &amp;lt; info2.start) )&lt;/STRONG&gt;
   std::cout &amp;lt;&amp;lt; "yess error with mic" &amp;lt;&amp;lt; std::endl;

  &lt;STRONG&gt;//the below if works fine&lt;/STRONG&gt;
  if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end))
   std::cout &amp;lt;&amp;lt; "no error at all" &amp;lt;&amp;lt; std::endl;
}

template&amp;lt;typename Time&amp;gt;
struct my_functor {
 public:
  my_functor() {  }
  my_functor(Time&amp;amp;  time_) : time(time_) {   }

 typedef void result_type;

 template&amp;lt;typename info_t&amp;gt;
 void operator()(const info_t&amp;amp; info1, const info_t&amp;amp; info2) {
   const auto&amp;amp; i1 = info1;
   const auto&amp;amp; i2 = info2;
   process_info&amp;lt;info_t, Time&amp;gt; (i1,i2, time);
 }

 private:
  Time&amp;amp;  time;
};

int main() {
Info_t  i1(10,2);
Info_t  i2(2,10);
int t = 1;
auto func = boost::bind( my_functor&amp;lt;int&amp;gt;(t), _1, _2 );
func(i1,i2);
return 0;
}
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Compilation Error :&amp;nbsp; See the "&amp;nbsp; ^&amp;nbsp;&amp;nbsp; "&amp;nbsp; at 3 places below. &lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;test.cpp(16): error: expression must have a constant value
    if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) &amp;amp;&amp;amp; (info1.end &amp;lt; info2.start) )
                                                                             &lt;STRONG&gt;^&lt;/STRONG&gt;
          detected during:
            instantiation of "void my_functor&amp;lt;Time&amp;gt;::operator()(const info_t &amp;amp;, const info_t &amp;amp;) [with Time=int, info_t=Info_t]" at line 313 of "/home/aniketnp/boost_1_55_0/boost/bind/bind.hpp"
            instantiation of "void boost::_bi::list2&amp;lt;A1, A2&amp;gt;::operator()(boost::_bi::type&amp;lt;void&amp;gt;, F &amp;amp;, A &amp;amp;, int) [with A1=boost::arg&amp;lt;1&amp;gt;, A2=boost::arg&amp;lt;2&amp;gt;, F=my_functor&amp;lt;int&amp;gt;, A=boost::_bi::list2&amp;lt;Info_t &amp;amp;, Info_t &amp;amp;&amp;gt;]" at line 61 of "/home/aniketnp/boost_1_55_0/boost/bind/bind_template.hpp"
            instantiation of "boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::result_type boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::operator()(A1 &amp;amp;, A2 &amp;amp;) [with R=boost::_bi::unspecified, F=my_functor&amp;lt;int&amp;gt;, L=boost::_bi::list2&amp;lt;boost::arg&amp;lt;1&amp;gt;, boost::arg&amp;lt;2&amp;gt;&amp;gt;, A1=Info_t, A2=Info_t]" at line 48

test.cpp(16): error: this operator is not allowed in a template argument expression
    if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) &amp;amp;&amp;amp; (info1.end &amp;lt; info2.start) )
                                                                                 &lt;STRONG&gt; ^&lt;/STRONG&gt;
          detected during:
            instantiation of "void my_functor&amp;lt;Time&amp;gt;::operator()(const info_t &amp;amp;, const info_t &amp;amp;) [with Time=int, info_t=Info_t]" at line 313 of "/home/aniketnp/boost_1_55_0/boost/bind/bind.hpp"
            instantiation of "void boost::_bi::list2&amp;lt;A1, A2&amp;gt;::operator()(boost::_bi::type&amp;lt;void&amp;gt;, F &amp;amp;, A &amp;amp;, int) [with A1=boost::arg&amp;lt;1&amp;gt;, A2=boost::arg&amp;lt;2&amp;gt;, F=my_functor&amp;lt;int&amp;gt;, A=boost::_bi::list2&amp;lt;Info_t &amp;amp;, Info_t &amp;amp;&amp;gt;]" at line 61 of "/home/aniketnp/boost_1_55_0/boost/bind/bind_template.hpp"
            instantiation of "boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::result_type boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::operator()(A1 &amp;amp;, A2 &amp;amp;) [with R=boost::_bi::unspecified, F=my_functor&amp;lt;int&amp;gt;, L=boost::_bi::list2&amp;lt;boost::arg&amp;lt;1&amp;gt;, boost::arg&amp;lt;2&amp;gt;&amp;gt;, A1=Info_t, A2=Info_t]" at line 48

test.cpp(16): error: expected a "&amp;gt;"
    if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) &amp;amp;&amp;amp; (info1.end &amp;lt; info2.start) )
                                                                                       &lt;STRONG&gt; ^&lt;/STRONG&gt;
          detected during:
            instantiation of "void my_functor&amp;lt;Time&amp;gt;::operator()(const info_t &amp;amp;, const info_t &amp;amp;) [with Time=int, info_t=Info_t]" at line 313 of "/home/aniketnp/boost_1_55_0/boost/bind/bind.hpp"
            instantiation of "void boost::_bi::list2&amp;lt;A1, A2&amp;gt;::operator()(boost::_bi::type&amp;lt;void&amp;gt;, F &amp;amp;, A &amp;amp;, int) [with A1=boost::arg&amp;lt;1&amp;gt;, A2=boost::arg&amp;lt;2&amp;gt;, F=my_functor&amp;lt;int&amp;gt;, A=boost::_bi::list2&amp;lt;Info_t &amp;amp;, Info_t &amp;amp;&amp;gt;]" at line 61 of "/home/aniketnp/boost_1_55_0/boost/bind/bind_template.hpp"
            instantiation of "boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::result_type boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::operator()(A1 &amp;amp;, A2 &amp;amp;) [with R=boost::_bi::unspecified, F=my_functor&amp;lt;int&amp;gt;, L=boost::_bi::list2&amp;lt;boost::arg&amp;lt;1&amp;gt;, boost::arg&amp;lt;2&amp;gt;&amp;gt;, A1=Info_t, A2=Info_t]" at line 48&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Now, if I compile it without&amp;nbsp; " -mmic " flag, then there is no compiler errors.&lt;/P&gt;

&lt;P&gt;I compile with this : icpc -L/home/aniketnp/tbb42_20140122oss/lib/intel64/gcc4.4 -std=c++11 -I/home/aniketnp/boost_1_55_0 -I/home/aniketnp/tbb42_20140122oss/include test.cpp&lt;/P&gt;

&lt;P&gt;I dont get any error. It compiles and runs fine.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Please help me figure out why is that. I understand the platforms are different. The mic version runs on the xeon phi card. while intel64 is for standard 8/12/16 core processors. Because of this there is no generic-ness left in my code. and I have to change my code every now and then.&lt;/P&gt;</description>
      <pubDate>Mon, 30 Jun 2014 23:32:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052977#M50746</guid>
      <dc:creator>Aniket_P_1</dc:creator>
      <dc:date>2014-06-30T23:32:51Z</dc:date>
    </item>
    <item>
      <title>Is there a requirement for</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052978#M50747</link>
      <description>&lt;P&gt;Is there a requirement for using such an old compiler?&amp;nbsp; I think that was from before the time when MIC went to market (even though the "official" advice on boost doesn't indicate any updates in 18 months).&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 00:26:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052978#M50747</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2014-07-01T00:26:29Z</dc:date>
    </item>
    <item>
      <title>The compilers in our clusters</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052979#M50748</link>
      <description>&lt;P&gt;The compilers in our clusters are not updated so I have only icc 13.0.1 compiler from intel. However, the above code compiles correctly for non-mic&amp;nbsp; compilation. I tried splitting the if()&amp;nbsp; loop as follows :&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;
 if ((info2.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) ) 
 {
     if ( info1.end &amp;lt; info2.start)
        //do something
  }

// error is propagated towards inner if  loop

test.cpp(17): error: expression must have a constant value
       if ( info1.end &amp;lt; info2.start) 
                        ^
          detected during:
            instantiation of "void my_functor&amp;lt;Time&amp;gt;::operator()(const info_t &amp;amp;, const info_t &amp;amp;) [with Time=int, info_t=Info_t]" at line 313 of "/home/aniketnp/boost_1_55_0/boost/bind/bind.hpp"
            instantiation of "void boost::_bi::list2&amp;lt;A1, A2&amp;gt;::operator()(boost::_bi::type&amp;lt;void&amp;gt;, F &amp;amp;, A &amp;amp;, int) [with A1=boost::arg&amp;lt;1&amp;gt;, A2=boost::arg&amp;lt;2&amp;gt;, F=my_functor&amp;lt;int&amp;gt;, A=boost::_bi::list2&amp;lt;Info_t &amp;amp;, Info_t &amp;amp;&amp;gt;]" at line 61 of "/home/aniketnp/boost_1_55_0/boost/bind/bind_template.hpp"
            instantiation of "boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::result_type boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::operator()(A1 &amp;amp;, A2 &amp;amp;) [with R=boost::_bi::unspecified, F=my_functor&amp;lt;int&amp;gt;, L=boost::_bi::list2&amp;lt;boost::arg&amp;lt;1&amp;gt;, boost::arg&amp;lt;2&amp;gt;&amp;gt;, A1=Info_t, A2=Info_t]" at line 49

test.cpp(17): error: this operator is not allowed in a template argument expression
       if ( info1.end &amp;lt; info2.start) 
                             ^
          detected during:
            instantiation of "void my_functor&amp;lt;Time&amp;gt;::operator()(const info_t &amp;amp;, const info_t &amp;amp;) [with Time=int, info_t=Info_t]" at line 313 of "/home/aniketnp/boost_1_55_0/boost/bind/bind.hpp"
            instantiation of "void boost::_bi::list2&amp;lt;A1, A2&amp;gt;::operator()(boost::_bi::type&amp;lt;void&amp;gt;, F &amp;amp;, A &amp;amp;, int) [with A1=boost::arg&amp;lt;1&amp;gt;, A2=boost::arg&amp;lt;2&amp;gt;, F=my_functor&amp;lt;int&amp;gt;, A=boost::_bi::list2&amp;lt;Info_t &amp;amp;, Info_t &amp;amp;&amp;gt;]" at line 61 of "/home/aniketnp/boost_1_55_0/boost/bind/bind_template.hpp"
            instantiation of "boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::result_type boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::operator()(A1 &amp;amp;, A2 &amp;amp;) [with R=boost::_bi::unspecified, F=my_functor&amp;lt;int&amp;gt;, L=boost::_bi::list2&amp;lt;boost::arg&amp;lt;1&amp;gt;, boost::arg&amp;lt;2&amp;gt;&amp;gt;, A1=Info_t, A2=Info_t]" at line 49

test.cpp(17): error: expected a "&amp;gt;"
       if ( info1.end &amp;lt; info2.start) 
                                   ^
          detected during:
            instantiation of "void my_functor&amp;lt;Time&amp;gt;::operator()(const info_t &amp;amp;, const info_t &amp;amp;) [with Time=int, info_t=Info_t]" at line 313 of "/home/aniketnp/boost_1_55_0/boost/bind/bind.hpp"
            instantiation of "void boost::_bi::list2&amp;lt;A1, A2&amp;gt;::operator()(boost::_bi::type&amp;lt;void&amp;gt;, F &amp;amp;, A &amp;amp;, int) [with A1=boost::arg&amp;lt;1&amp;gt;, A2=boost::arg&amp;lt;2&amp;gt;, F=my_functor&amp;lt;int&amp;gt;, A=boost::_bi::list2&amp;lt;Info_t &amp;amp;, Info_t &amp;amp;&amp;gt;]" at line 61 of "/home/aniketnp/boost_1_55_0/boost/bind/bind_template.hpp"
            instantiation of "boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::result_type boost::_bi::bind_t&amp;lt;R, F, L&amp;gt;::operator()(A1 &amp;amp;, A2 &amp;amp;) [with R=boost::_bi::unspecified, F=my_functor&amp;lt;int&amp;gt;, L=boost::_bi::list2&amp;lt;boost::arg&amp;lt;1&amp;gt;, boost::arg&amp;lt;2&amp;gt;&amp;gt;, A1=Info_t, A2=Info_t]" at line 49

compilation aborted for test.cpp (code 2)
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 00:45:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052979#M50748</guid>
      <dc:creator>Aniket_P_1</dc:creator>
      <dc:date>2014-07-01T00:45:24Z</dc:date>
    </item>
    <item>
      <title>Unfortunately, I dont have</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052980#M50749</link>
      <description>&lt;P&gt;I tried with intel composer xe 2013 update 3 (sp1) ( trial version as well). It gives me the same error. When I try this, it gives me no error.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;template &amp;lt;typename T, typename Time&amp;gt;
void process_info(const T info1, const T info2, const Time&amp;amp; t)  {

   const auto&amp;amp; i1s = info1.start;
   const auto&amp;amp; i2s = info2.start;
   const auto&amp;amp; i1e = info1.end;
   const auto&amp;amp; i2e = info2.end;

   if ((i2s &amp;lt; i2e) &amp;amp;&amp;amp; (i2e &amp;gt; i1s) ) {
     if ( i1e &amp;lt; i2s)
       std::cout &amp;lt;&amp;lt; "no error" &amp;lt;&amp;lt; std::endl;
  }
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 02:03:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052980#M50749</guid>
      <dc:creator>Aniket_P_1</dc:creator>
      <dc:date>2014-07-01T02:03:00Z</dc:date>
    </item>
    <item>
      <title>I reproduced the error but I</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052981#M50750</link>
      <description>&lt;P&gt;I reproduced the error but I do not know why it fails with &lt;STRONG&gt;-mmic&lt;/STRONG&gt; so I have submitted this to Development (see internal tracking id below) for further analysis. I will post another reply when I learn more.&lt;/P&gt;

&lt;P&gt;(Internal tracking id: DPD200358195)&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 09:50:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052981#M50750</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2014-07-01T09:50:14Z</dc:date>
    </item>
    <item>
      <title>Hi Kevin, It looks like a</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052982#M50751</link>
      <description>&lt;P&gt;Hi Kevin, It looks like a possible compiler bug. I have asked this in the below topic. It may be because the compiler asks for a &amp;nbsp;" &amp;gt; " as it treats it as member template. if you compile without &amp;nbsp;" -mmic " flag, it works okay.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;A href="https://software.intel.com/en-us/forums/topic/517626" target="_blank"&gt;https://software.intel.com/en-us/forums/topic/517626&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Kindly confirm.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Aniket&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 10:18:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052982#M50751</guid>
      <dc:creator>Aniket_P_1</dc:creator>
      <dc:date>2014-07-01T10:18:01Z</dc:date>
    </item>
    <item>
      <title>Yes, I reproduced the error</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052983#M50752</link>
      <description>&lt;P&gt;Yes, I reproduced the error using the Composer XE 2013 SP1 Update 3 and a newer Beta (15.0) compiler and forwarded it to Development for further investigation as indicated. I will let you know what I hear.&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 10:47:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052983#M50752</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2014-07-01T10:47:45Z</dc:date>
    </item>
    <item>
      <title>Hi Aniket,</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052984#M50753</link>
      <description>&lt;P&gt;Hi Aniket,&lt;/P&gt;

&lt;P&gt;Development replied that this is not a compiler defect and noted that GNU gives the same error. They did not (yet) provide an explanation why only the &lt;STRONG&gt;-mmic&lt;/STRONG&gt; compilation suffers errors. In their explanation they wrote:&lt;/P&gt;

&lt;P&gt;&amp;lt;quote&amp;gt;&lt;/P&gt;

&lt;P&gt;The problem can be shown here:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;// from &amp;lt;initializer_list&amp;gt; header file
namespace std
{
  template&amp;lt;class _E&amp;gt; class initializer_list {};

  template&amp;lt;class _Tp&amp;gt;
    constexpr const _Tp*
    end(initializer_list&amp;lt;_Tp&amp;gt; __ils) noexcept;
}

using namespace std;

struct Info_t {
 int start;
 int end;
};

template &amp;lt;typename T&amp;gt;
void process_info(const T&amp;amp; info1, const T&amp;amp; info2) {
  if (info1.end &amp;lt; info2.start) ;
//  if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end)) ;
}

int main() {
 Info_t i1, i2;
 process_info(i1,i2);
 return 0;
}&lt;/PRE&gt;

&lt;P&gt;The name "end" is being brought in via the using declaration from the std namespace.&lt;BR /&gt;
	Since std::end is a template the compiler and info1 is dependent name it thinks "end &amp;lt;" is the start of a call to std::end (note that std::end is a template so having the start of a template argument list be the token &amp;lt; instead of less than makes sense) -- hence the error.&lt;/P&gt;

&lt;P&gt;Suggested workaround:&lt;BR /&gt;
	(1) Change the name "end" inside Info_t to some other name so it doesn't conflict with std::end&lt;BR /&gt;
	(2) Fix the code to put parenthesis in to prevent the parser from thinking that end is a template name, i.e.:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#ifdef OK
  if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) &amp;amp;&amp;amp; ((info1.end) &amp;lt; info2.start) )
#else
  if ((info1.start &amp;lt; info2.end) &amp;amp;&amp;amp; (info2.end &amp;gt; info1.end) &amp;amp;&amp;amp; (info1.end &amp;lt; info2.start) )
#endif&lt;/PRE&gt;

&lt;P&gt;&amp;lt;end quote&amp;gt;&lt;/P&gt;

&lt;P&gt;I will let you know the explanation for why the host compilation did not throw similar errors once I hear from them about that.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jul 2014 07:05:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052984#M50753</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2014-07-02T07:05:18Z</dc:date>
    </item>
    <item>
      <title>Thanks for the update Kevin.</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052985#M50754</link>
      <description>&lt;P&gt;Thanks for the update Kevin. I have used a workaround by changing the " &amp;gt; " sign in the if() logic. This compiles ok for mic and non-mic versions as well so that i have consistency in my code.&lt;/P&gt;

&lt;P&gt;I compile my generic code using gcc4.7.2 / gcc 4.9 / intel 13.0 / intel 14.0 (trial) compilers. I use intel compilers to compile for mic.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I also use Intel TBB in my codes. Is there any specific difference between standalone TBB release and TBB provided in intel suite ?&lt;/P&gt;

&lt;P&gt;Also Is it possible to compile a simple test code (containing TBB threads) for&amp;nbsp; intel mic&amp;nbsp; using GCC ?,&lt;/P&gt;

&lt;P&gt;I read this post here (&amp;nbsp; &lt;A href="https://software.intel.com/en-us/blogs/2012/06/05/knights-corner-open-source-software-stack/&amp;nbsp;" target="_blank"&gt;https://software.intel.com/en-us/blogs/2012/06/05/knights-corner-open-source-software-stack/&amp;nbsp;&lt;/A&gt;; )&amp;nbsp; which mention low performance if compiled with gcc. But it is still possible right?&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jul 2014 20:37:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052985#M50754</guid>
      <dc:creator>Aniket_P_1</dc:creator>
      <dc:date>2014-07-02T20:37:47Z</dc:date>
    </item>
    <item>
      <title>The final 13.1 and 14.0</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052986#M50755</link>
      <description>&lt;P&gt;The final 13.1 and 14.0 compilers are fairly reliable (aside from a few bugs such as you happened upon here), but there were more problems in earlier versions.&lt;/P&gt;

&lt;P&gt;I haven't heard of anyone checking whether TBB can be built using the MIC gcc.&amp;nbsp; As the URL you quoted mentions, it doesn't support any KNC vector instructions.&amp;nbsp; There is avx-512f in current gcc, but nothing to run it on yet except the SDE simulator, so it seems no one signed up to improve support of gcc on KNC.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Jul 2014 00:09:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052986#M50755</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2014-07-03T00:09:27Z</dc:date>
    </item>
    <item>
      <title>To close on the original</title>
      <link>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052987#M50756</link>
      <description>&lt;P&gt;To close on the original issue, Development indicates compilation can succeed on the host (as both of us observed) when using a version of the standard library before the c++11 std::initializer_list class was added or a version of &amp;lt;iostream.h&amp;gt; that does not automatically include &amp;lt;initializer_list&amp;gt;.&amp;nbsp; The initializer_list class existed in GNU 4.4 and 4.5 but it was not until GNU 4.6 that the std::begin() and std::end() functions were added. My host system has GNU 4.4.6.&lt;/P&gt;

&lt;P&gt;Standalone versions of TBB (and performance libs too) and those bundled in the Intel suite are the same where version numbers match.&lt;/P&gt;

&lt;P&gt;I cannot speak to building code using TBB with the MIC GCC since I do not have any knowledge/experience with that either, sorry.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Jul 2014 07:07:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Unable-to-use-boost-bind-with-intel-MIC-in-a-function-with/m-p/1052987#M50756</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2014-07-03T07:07:30Z</dc:date>
    </item>
  </channel>
</rss>

