Thread overview
Is this a bug or this the code wrong?
Apr 20, 2007
Sz. Horvát
Apr 20, 2007
Sz. Horvát
Apr 22, 2007
Sz. Horvát
Apr 22, 2007
Bertel Brander
April 20, 2007
I tried to compile a program, which I normally use with gcc, using dmc. It compiles with gcc, but dmc gives a strange error message.

Here is a reduced test case:

template<typename T> class arr { T x; };

template<void (*D)(const arr<double>)> class ode { };

void fun(const arr<double>) { }

int main() {
	ode<fun> odeInst;
	return 0;
}

Is the code wrong or is this a bug in dmc? The error message is:

        ode<fun> odeInst;
               ^
sim.cpp(9) : Error: need explicit cast to convert
from: void (*C func)(const arr<double >)
to  : void (*C func)(const arr<double >)
--- errorlevel 1

If I remove the const or change arr<double> to double *, the error message disappears.

Thanks for your help in advance,
Szabolcs

April 20, 2007
I forgot to mention that this problem exists with both dmc 8.49 and the 8.50 beta.

April 22, 2007
Anyone?
April 22, 2007
Sz. Horvát skrev:
> 
> I tried to compile a program, which I normally use with gcc, using dmc. It compiles with gcc, but dmc gives a strange error message.
> 
> Here is a reduced test case:
> 
> template<typename T> class arr { T x; };
> 
> template<void (*D)(const arr<double>)> class ode { };
> 
> void fun(const arr<double>) { }
> 
> int main() {
>     ode<fun> odeInst;
>     return 0;
> }
> 
> Is the code wrong or is this a bug in dmc? The error message is:
> 
>         ode<fun> odeInst;
>                ^
> sim.cpp(9) : Error: need explicit cast to convert
> from: void (*C func)(const arr<double >)
> to  : void (*C func)(const arr<double >)

I think it's a bug in the compiler, your code seems fine.

Alone the message (convert A to A) indicates that the compiler
is in a mess.

-- 
Just another homepage:
http://damb.dk
But it's mine - Bertel