[Issue 24223] New: __traits(initSymbol) should work for enum types
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Nov 3 01:08:35 UTC 2023
https://issues.dlang.org/show_bug.cgi?id=24223
Issue ID: 24223
Summary: __traits(initSymbol) should work for enum types
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: snarwin+bugzilla at gmail.com
An enum type can have its own default initializer, independent of its base
type:
---
enum E : int { a = 123 }
static assert(E.init != int.init);
---
This initializer is currently made available through TypeInfo.initializer:
---
enum E : int { a = 123 }
void main()
{
E e;
const(void)[] initializer = typeid(E).initializer;
assert(cast(const(void)[]) (&e)[0 .. 1] == initializer);
}
---
However, it is not available through __traits(initSymbol), which makes it
difficult to access without depending on druntime (e.g., in BetterC code).
--
More information about the Digitalmars-d-bugs
mailing list