www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Getting the superclass of a type?

reply pineapple <meapineapple gmail.com> writes:
I'd like to be able to write something like this, but I haven't 
been able to find anything in the docs

     class Base{}
     class Sub: Base{}
     static assert(is(SuperClassOf!Sub == Base));
Sep 05 2016
parent reply Lodovico Giaretta <lodovico giaretart.net> writes:
On Monday, 5 September 2016 at 15:20:10 UTC, pineapple wrote:
 I'd like to be able to write something like this, but I haven't 
 been able to find anything in the docs

     class Base{}
     class Sub: Base{}
     static assert(is(SuperClassOf!Sub == Base));
https://dlang.org/phobos/std_traits.html#.BaseClassesTuple
Sep 05 2016
next sibling parent Johannes Loher <johannesloher fg4f.de> writes:
Am 05.09.2016 um 17:43 schrieb Lodovico Giaretta:
 On Monday, 5 September 2016 at 15:20:10 UTC, pineapple wrote:
 I'd like to be able to write something like this, but I haven't been
 able to find anything in the docs

     class Base{}
     class Sub: Base{}
     static assert(is(SuperClassOf!Sub == Base));
https://dlang.org/phobos/std_traits.html#.BaseClassesTuple
Another option would be to use the following: class Base {} class Sub: Base {} class Other {} static assert(is(Sub : Base)); static assert(!is(Other : Base)); However, the ":" syntax also works for automatic conversion (see http://ddili.org/ders/d.en/is_expr.html and search for "is (T : OtherT)").
Sep 05 2016
prev sibling parent pineapple <meapineapple gmail.com> writes:
On Monday, 5 September 2016 at 15:43:52 UTC, Lodovico Giaretta 
wrote:
 On Monday, 5 September 2016 at 15:20:10 UTC, pineapple wrote:
 I'd like to be able to write something like this, but I 
 haven't been able to find anything in the docs

     class Base{}
     class Sub: Base{}
     static assert(is(SuperClassOf!Sub == Base));
https://dlang.org/phobos/std_traits.html#.BaseClassesTuple
Aha, thank you!
Sep 05 2016