1 matches bool, 2 matches long

Mehrdad wfunction at hotmail.com
Sun Apr 28 16:00:13 PDT 2013


On Sunday, 28 April 2013 at 22:40:33 UTC, Andrei Alexandrescu 
wrote:
> int fun(short v1) { return 1; }
> int fun(long v1) { return 2; }
> So the behavior of bool in this case is consistent with the 
> behavior of other integral types.


We all understand that, but in that case, it's the programmer's 
fault (or intention!) for giving different behavior between the 
two.

In the bool/long case, the programmer is writing perfectly 
logical code, and it's the compiler that interprets it a weird 
way.

You can see the difference more clearly here:

	void print(long a, bool newline = false)
	{
	    write(a);
	    if (newline)
	        writeln();
	}

	void print(bool newline = false)
	{
	    if (newline)
	        writeln();
	}
	
	void main()
	{
	    print(1);
	    print(2);
	}


Are you really going to blame the programmer for expecting this 
to print

	1
	2

or are you going to blame the language for not doing so?


More information about the Digitalmars-d mailing list