allMembers and getMember traits behavior
Martin
martinbbjerregaard at gmail.com
Fri Jun 21 06:04:13 PDT 2013
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
More information about the Digitalmars-d
mailing list