Possible bug with mixin template functions and variadic params
Koroskin Denis
2korden at gmail.com
Thu Jul 24 10:34:37 PDT 2008
On Thu, 24 Jul 2008 17:22:56 +0400, Derek Ney <derek at hipgraphics.com>
wrote:
> I posted the following the the language forum thinking perhaps I was
> doing something wrong, but it seems that this may be a bug in the 2.014
> compiler. Here is what I posted:
>
> I am trying to create a set of methods that take a variable number of
> arguments (at compile time). I would have liked to have used template
> functions to do that, but I need the functions to be virtual, and
> template functions cannot be virtual. So I thought I would try to use a
> mixin of a variadic template function. But I am getting a weird compiler
> error with my simple test program. Here is the test program:
>
> 1 import std.stdio;
> 2
> 3 template TCALL(ARGS...)
> 4 {
> 5 void makecall(ARGS args)
> 6 {
> 7 writefln("tcall...", args);
> 8 }
> 9 }
> 10
> 11 mixin TCALL!();
> 12 mixin TCALL!(int);
> 13 mixin TCALL!(int,int);
> 14
> 15
> 16 class Method
> 17 {
> 18 mixin TCALL!();
> 19 mixin TCALL!(int);
> 20 mixin TCALL!(int,int);
> 21 }
> 22
> 23 void main()
> 24 {
> 25 auto m = new Method;
> 26
> 27 m.makecall(0,1);
> 28 makecall(0,1);
> 29 }
>
> And when I compile with "Digital Mars D Compiler v2.014" I get this
> error:
>
> test6.d(27): Error: m.makecall is not a declaration
> test6.d(27): Error: function expected before (), not 1 of type int
>
> Can anyone explain what is going on here? It seems like it should work.
> Note that if you comment out line 27 and compile it compiles fine and
> runs producing the expected output:
>
> tcall...01
>
> -Thanks, Derek
>
>
Bugs should be posted to bugzilla: http://d.puremagic.com/issues/
This newsgroup is just mirroring posted bug reports and used for bug
discussion that should not go to bugzilla for some reason.
More information about the Digitalmars-d-bugs
mailing list