mirror of
https://github.com/dlang/phobos.git
synced 2025-05-01 15:40:36 +03:00
Simplify isInnerClass
This commit is contained in:
parent
19f72cfe7f
commit
19e8ff244d
1 changed files with 13 additions and 4 deletions
17
std/traits.d
17
std/traits.d
|
@ -2525,11 +2525,20 @@ Returns:
|
||||||
template isInnerClass(T)
|
template isInnerClass(T)
|
||||||
if (is(T == class))
|
if (is(T == class))
|
||||||
{
|
{
|
||||||
import std.meta : staticIndexOf;
|
|
||||||
|
|
||||||
static if (is(typeof(T.outer)))
|
static if (is(typeof(T.outer)))
|
||||||
enum isInnerClass = __traits(isSame, typeof(T.outer), __traits(parent, T))
|
{
|
||||||
&& (staticIndexOf!(__traits(allMembers, T), "outer") == -1);
|
bool hasOuterMember(string[] members...)
|
||||||
|
{
|
||||||
|
foreach (m; members)
|
||||||
|
{
|
||||||
|
if (m == "outer")
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
enum isInnerClass = __traits(isSame, typeof(T.outer), __traits(parent, T)) &&
|
||||||
|
!hasOuterMember(__traits(allMembers, T));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
enum isInnerClass = false;
|
enum isInnerClass = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue