compile error with Boost Function object and templated function (Intel C++ compiler)



 DEVELOP > c-Plus-Plus > compile error with Boost Function object and templated function (Intel C++ compiler)

LINK TO THIS PAGE  


rating :  0   |  0


  Page 1 of 1

1

 
Topic: DEVELOP > c-Plus-Plus
User: "Faheem Mitha"
Date: 26 Aug 2006 01:20:28 AM
Object: compile error with Boost Function object and templated function (Intel C++ compiler)
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>();
}
***************************************************************
.

User: "mlimber"

Title: Re: compile error with Boost Function object and templated function (Intel C++ compiler) 26 Aug 2006 12:11:03 PM
Faheem Mitha wrote:

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>();
}
***************************************************************

Changing the header to <functional> and boost::function to
std::tr1::function, the code compiles fine at Dinkum's online test with
both MS VC++8 and EDG, so I'd say it's an Intel problem. In that case,
you'll want to post to a compiler-specific newsgroup or forum (in your
case, something to do with Intel's compiler) for a work-around (see
http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9).
Cheers! --M
.
User: "Faheem Mitha"

Title: Re: compile error with Boost Function object and templated function (Intel C++ compiler) 26 Aug 2006 01:16:05 PM
On 26 Aug 2006 10:11:03 -0700, mlimber <mlimber@gmail.com> wrote:

Changing the header to <functional> and boost::function to
std::tr1::function, the code compiles fine at Dinkum's online test
with both MS VC++8 and EDG, so I'd say it's an Intel problem. In
that case, you'll want to post to a compiler-specific newsgroup or
forum (in your case, something to do with Intel's compiler) for a
work-around (see
http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9).

Thanks for the information. I don't quite get the bit about changing
the header and boost::function, but if it is really a compiler bug,
that is unfortunate.
Faheem.
.



  Page 1 of 1

1

 


Related Articles
 

NEWER

pg.1232     pg.940     pg.716     pg.544     pg.412     pg.311     pg.234     pg.175     pg.130     pg.96     pg.70     pg.50     pg.35     pg.24     pg.16     pg.10     pg.6     pg.3     pg.1

OLDER