F
Faheem Mitha
Hi,
The following bit of code compiles fine with gcc 3.3 or later, but has
problems with the Intel C++ compiler version 9.1, which produces the
following error message.
Is this a compiler bug, or is there something wrong with the code?
If the former, I'd be grateful for suggestions of a workaround, and if
the latter, please tell me what I'm doing wrong.
Note that the corresponding version with no templates compiles without
problems.
Thanks in advance. Faheem.
**************************************************************************
icpc -o foo.o -c -Wall -Werror -g -wd383,810,981,1418 cxxlib-icc
-DBOOST_RAND -I/usr/local/include/boost-1_33_1 \foo.cpp
foo.cpp(12): error: no operator "=" matches these operands operand
types are: boost::function<int (), std::allocator<void>> =
<unknown-type>
choice = &rchoice<dim>;
^
*************************************************************
#include <boost/function.hpp>
template<int dim>
int rchoice()
{
return 1;
}
template<int dim> int foo(void)
{
boost::function<int ()> choice;
choice = &rchoice<dim>;
return choice();
}
int main()
{
return foo<2>();
}
***************************************************************
The following bit of code compiles fine with gcc 3.3 or later, but has
problems with the Intel C++ compiler version 9.1, which produces the
following error message.
Is this a compiler bug, or is there something wrong with the code?
If the former, I'd be grateful for suggestions of a workaround, and if
the latter, please tell me what I'm doing wrong.
Note that the corresponding version with no templates compiles without
problems.
Thanks in advance. Faheem.
**************************************************************************
icpc -o foo.o -c -Wall -Werror -g -wd383,810,981,1418 cxxlib-icc
-DBOOST_RAND -I/usr/local/include/boost-1_33_1 \foo.cpp
foo.cpp(12): error: no operator "=" matches these operands operand
types are: boost::function<int (), std::allocator<void>> =
<unknown-type>
choice = &rchoice<dim>;
^
*************************************************************
#include <boost/function.hpp>
template<int dim>
int rchoice()
{
return 1;
}
template<int dim> int foo(void)
{
boost::function<int ()> choice;
choice = &rchoice<dim>;
return choice();
}
int main()
{
return foo<2>();
}
***************************************************************