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)".
