Should this work?
Jacob Carlborg
doob at me.com
Sat Jan 30 05:16:49 PST 2010
On 1/30/10 14:06, bobef wrote:
> I get these errors DMD 1.055:
>
> (void(char[] _param_0))()
> bug.d(2): Error: expected 1 function arguments, not 0
> (void(char[] _param_0))()
> bug.d(15): Error: template instance bug.Foo!(a) error instantiating
>
> //code----------------------------------------------------------------------------------------------
>
> void Foo(alias X)() {
> pragma(msg,typeof(X).stringof);
> }
>
> class A {
> void a(char[]) {
> }
>
> void b() {
> }
> }
>
> void main() {
>
> Foo!(A.a)(); //doesnt work
> Foo!(A.b)(); //works
>
> }
>
> //end of code ----------------------------------------------------------------------
Since "a" is a method and when you do "typeof(X)" it tries to call the
method but since it takes one parameter it fails. "b" doesn't fail
because it doesn't take any parameters. This is all because of the
optional parentheses in function calls. Change to: "typeof(&X)".
More information about the Digitalmars-d-learn
mailing list