allMembers and getMember traits behavior
Jacob Carlborg
doob at me.com
Fri Jun 21 06:15:42 PDT 2013
On 2013-06-21 15:04, Martin wrote:
> module test;
>
> void test()
> {
>
>
> foreach (member; __traits(allMembers, Client))
> {
> pragma(msg, member); // Prints all members fine, including "value"
> }
>
> // This line fails
> static if(__traits(getProtection, __traits(getMember, TestClass,
> "value")) == "public")
> {
> pragma(msg, "value is public");
> }
> else
> {
> pragma(msg, "value is not public");
> }
>
> }
>
> module testclass;
>
> class TestClass
> {
> private:
> int value;
> }
>
> When using the allMembers trait, the private "value" member of TestClass
> is included, but when trying to retrieve that member using the getMember
> trait, it fails to compile with test.d(13): Error: class main.TestClass
> member value is not accessible
>
> Is that intended behavior or a bug? I can't see why the getMember trait
> should not be able to retrieve private members when allMembers trait is
Can you use a string instead of getMember?
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list