[Issue 196] Static assertion involving typedef's base type fails strangely
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Jan 1 02:25:42 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=196
thomas-dloop at kuehne.cn changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|rejects-valid |
OS/Version|Windows |All
------- Comment #1 from thomas-dloop at kuehne.cn 2007-01-01 04:25 -------
The error message is incorrect, the assert should fail regardless.
#
# static assert (is (typeof(typeid(x).base) == int));
#
x -> (typedef int)
typeid(x) -> TypeInfo_Typedef(x)
typeid(x).base -> TypeInfo(int)
typeof(typeid(x).base) -> TypeInfo
Thus rewriting the above assert:
#
# static assert(is(TypeInfo == int));
#
To ensuring that a typedef's direct base type is an int:
#
# typedef byte X;
#
# static if(is(X == typedef) && is(X base == typedef)){
# static assert(is(typeof(base) == int));
# }
#
--
More information about the Digitalmars-d-bugs
mailing list