November 08, 2005 Alias / typedef bug with bool | ||||
|---|---|---|---|---|
| ||||
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
| ||||
November 12, 2005 Re: Alias / typedef bug with bool | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roberto Mariottini Attachments: | 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 | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply