Expression for: foo is derived from Clock

Brother Bill brotherbill at mail.com
Wed Feb 18 15:05:16 UTC 2026


On Wednesday, 18 February 2026 at 14:55:50 UTC, Nick Treleaven 
wrote:
> On Wednesday, 18 February 2026 at 14:49:56 UTC, Brother Bill 
> wrote:
>> ```Object foo``` is a class instance, perhaps null, perhaps a 
>> Clock or AlarmClock or Vegetable.
>>
>> What is the expression to ask the boolean question:
>>   Is foo of type Clock or a type derived from Clock, such as 
>> AlarmClock?
>
> Use a cast:
> https://dlang.org/spec/expression.html#cast_class
>
>> I tried the obvious ```foo is Clock```, but this did not 
>> compile.
>> ```
>> Error: type `Object` is not an expression
>>        bool isClock = (o is Clock)
>>                             ^
>> ```
>
> That use of `is` is a different expression:
> https://dlang.org/spec/expression.html#identity_expressions

That's it!
```
const(Clock) clock = cast(const Clock)o;
```

If clock is null, then o is either ```null``` or not derived from 
Clock.
Otherwise o, such as AlarmClock will have access to only the 
Clock features of o.


More information about the Digitalmars-d-learn mailing list