Any way to tell if an object is inside another class?

Mike Parker aldacron at gmail.com
Mon Sep 28 14:36:01 UTC 2020


On Monday, 28 September 2020 at 14:23:12 UTC, Ruby The Roobster 
wrote:
> On Monday, 28 September 2020 at 14:22:34 UTC, Ruby The Roobster 
> wrote:
>> I meant User Defined types. not UDAs. Anyways, the whole thing 
>> is me trying to find a hacky workaround that allows something 
>> similar to multiple alias this declarations(because multiple 
>> of these are not possible). And for this, I have to determine 
>> if a normal number is being passed, or if an user defined type 
>> is being passed through the parameter.
>
> I mean type, not number

There's the `parent` trait. You can wrap it like this:

```
import std;
class Foo {
     int x;
}
struct Bar {
     Foo f;
}
Foo g;

enum hasParent(alias sym) = is(__traits(parent, sym) == class) || 
is(__traits(parent, sym) == struct);

void main() {
    writeln(hasParent!(Bar.f));   // true
    writeln(hasParent!(g));
}
```




More information about the Digitalmars-d-learn mailing list