strange behavior with pointers to function with default args
    BCS 
    BCS at pathlink.com
       
    Tue Jun 13 10:27:09 PDT 2006
    
    
  
<code>
import std.stdio;
void foo (int i, int j = 7){writef("foo(%d,%d)\n",i,j);}
void bar (int i, int j = 6){writef("bar(%d,%d)\n",i,j);}
void foo (int i){assert(0);}
void bar (int i){assert(0);}
void main(char[][] argv)
{
	{
	auto fp = &bar;
	fp(1);
	fp = & foo;
	fp(1);
	}
	{
	auto fp = &foo;
	fp(1);
	fp = & bar;
	fp(1);
	}
}
</code>
Prints:
bar(1,6)
foo(1,6)
foo(1,6)
bar(1,6)
Reversing the two blocks gives:
foo(1,7)
bar(1,7)
bar(1,7)
foo(1,7)
Placing the asserted functions first causes asserts. (Known issue: #52)
Is this correct??
    
    
More information about the Digitalmars-d-bugs
mailing list