www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - indefinable type

reply BCS <BCS_member pathlink.com> writes:
dg is a delegate and must return a value of the same type as it self. What
should "some_type" be to make this work?

some_type delegate() dg;

/*********/
while(   (dg = dg())    !is null){}


(in case you are wondering this would act as a finite state machine)
Feb 20 2006
next sibling parent Sean Kelly <sean f4.ca> writes:
BCS wrote:
 dg is a delegate and must return a value of the same type as it self. What
 should "some_type" be to make this work?
 
 some_type delegate() dg;

I don't think this is currently possible in D. Sean
Feb 20 2006
prev sibling parent reply "Unknown W. Brackets" <unknown simplemachines.org> writes:
I think you could use "static if (is(typeof(dg) T))" to do this, more or 
less.  Not sure, would have to mess with it.

Read more here:
http://www.digitalmars.com/d/expression.html#IsExpression

-[Unknown]


 dg is a delegate and must return a value of the same type as it self. What
 should "some_type" be to make this work?
 
 some_type delegate() dg;
 
 /*********/
 while(   (dg = dg())    !is null){}
 
 
 (in case you are wondering this would act as a finite state machine)
 
 

Feb 20 2006
parent BCS <BCS_member pathlink.com> writes:
I did manage a hack around using a struct something like

struct foo
{
	foo delegate() dg;
}
foo dgv;
while(dgv.dg !is null)dgv = dgv.dg();


If function ptrs are used a cast to void* works.

Unknown W. Brackets wrote:
 I think you could use "static if (is(typeof(dg) T))" to do this, more or 
 less.  Not sure, would have to mess with it.
 
 Read more here:
 http://www.digitalmars.com/d/expression.html#IsExpression
 
 -[Unknown]
 
 
 dg is a delegate and must return a value of the same type as it self. 
 What
 should "some_type" be to make this work?

 some_type delegate() dg;

 /*********/
 while(   (dg = dg())    !is null){}


 (in case you are wondering this would act as a finite state machine)


Feb 21 2006