isInnerClass

Determines whether T is a class nested inside another class and that T.outer is the implicit reference to the outer class (i.e. outer has not been used as a field or method name)

template isInnerClass (
T
) if (
is(T == class)
) {
enum isInnerClass;
enum isInnerClass;
}

Parameters

T

type to test

Return Value

true if T is a class nested inside another, with the conditions described above; false otherwise

Examples

1 class C
2 {
3     int outer;
4 }
5 static assert(!isInnerClass!C);
6 
7 class Outer1
8 {
9     class Inner1 { }
10     class Inner2
11     {
12         int outer;
13     }
14 }
15 static assert(isInnerClass!(Outer1.Inner1));
16 static assert(!isInnerClass!(Outer1.Inner2));
17 
18 static class Outer2
19 {
20     static class Inner
21     {
22         int outer;
23     }
24 }
25 static assert(!isInnerClass!(Outer2.Inner));

Meta

Suggestion Box / Bug Report