digitalmars.D.bugs - Alias / typedef bug with bool
- Roberto Mariottini (55/55) Nov 08 2005 In the following sample:
- Thomas Kuehne (11/65) Nov 12 2005 -----BEGIN PGP SIGNED MESSAGE-----
In the following sample:
----
import std.stdio;
bool t = true;
bool f = false;
void print(bool b)
{
writefln("#B: ", b);
}
void print(bit b)
{
writefln("#T: ", b);
}
int main()
{
print(t);
print(f);
print(true);
print(false);
}
----
compiling with DMD v0.139 on Windows XP I get:
testBool.d(18): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
testBool.d(19): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
testBool.d(20): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
testBool.d(21): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
I don't understand:
- If bool is an alias for bit, then the declaration of the two functions shoul
have failed at line 11.
- If bool is a typedef for bit, then the program should have compiled correctly.
Ciao
Nov 08 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Roberto Mariottini schrieb am 2005-11-08:
In the following sample:
----
import std.stdio;
bool t = true;
bool f = false;
void print(bool b)
{
writefln("#B: ", b);
}
void print(bit b)
{
writefln("#T: ", b);
}
int main()
{
print(t);
print(f);
print(true);
print(false);
}
----
compiling with DMD v0.139 on Windows XP I get:
testBool.d(18): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
testBool.d(19): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
testBool.d(20): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
testBool.d(21): function testBool.print called with argument types:
(bit)
matches both:
testBool.print(bit)
and:
testBool.print(bit)
I don't understand:
- If bool is an alias for bit, then the declaration of the two functions shoul
have failed at line 11.
- If bool is a typedef for bit, then the program should have compiled
correctly.
Bool is an alias for bit (-> dmd/src/phobos/object.d:6).
http://dstress.kuehne.cn/nocompile/alias_05.d
Thomas
-----BEGIN PGP SIGNATURE-----
iD8DBQFDdkBE3w+/yD4P9tIRAs8FAJ9pAALroEpNdDJA9cCFpFolE7j2ZACgz/RX
5+l1p5DLAebt1W+qeooarUU=
=i+pU
-----END PGP SIGNATURE-----
Nov 12 2005








Thomas Kuehne <thomas-dloop kuehne.cn>