3
이 같은 코드를 가지고 C.foo
및 C.bar
은 정적 또는하지 않은 경우 나, (만약 정적을 사용) 내 템플릿에 확인 할 : 선택하면
class C {
int foo;
static int bar;
}
는 이미 이러한 특성을 시도 하지만 그들은 정적 멤버에 대한 변경하지 않는 것 :
pragma(msg, __traits(hasMember, C, "foo")); // -> true
pragma(msg, __traits(hasMember, C.init, "foo")); // -> true
pragma(msg, __traits(hasMember, C, "bar")); // -> true
pragma(msg, __traits(hasMember, C.init, "bar")); // -> true
실제로 수업이 작동하지 않습니다 구조체 작동이 해킹 중 하나
pragma(msg, __traits(compiles, { enum tmp = __traits(getMember, C, "foo"); })); // -> false
pragma(msg, __traits(compiles, { enum tmp = __traits(getMember, C.init, "foo"); })); // -> false
pragma(msg, __traits(compiles, { enum tmp = __traits(getMember, C, "bar"); })); // -> false
pragma(msg, __traits(compiles, { enum tmp = __traits(getMember, C.init, "bar"); })); // -> false
[이 관련 질문] (http://stackoverflow.com/questions/38813868/how-can-get-all-non-static-members-of-a-type?s=8%7C0.0000)을 참조하십시오.) – rcorre