Thread overview | |||||
---|---|---|---|---|---|
|
January 31, 2020 Unexpected result of IsInstanceOf | ||||
---|---|---|---|---|
| ||||
The following result doesn't make sense to me... how does isInstanceOf return false? ``` import std.traits; import std.stdio; import std.typecons; auto f(T)(T t){ return Nullable!T(t); } void main(){ auto f3 = f(3); writeln(typeof(f3).stringof); writeln(isInstanceOf!(Nullable, f3)); } ``` outputs ``` Nullable!int false ``` |
January 30, 2020 Re: Unexpected result of IsInstanceOf | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Jones | On 1/30/20 4:51 PM, Ben Jones wrote:
> The following result doesn't make sense to me... how does isInstanceOf return false?
>
> ```
> import std.traits;
> import std.stdio;
> import std.typecons;
> auto f(T)(T t){
> return Nullable!T(t);
> }
> void main(){
> auto f3 = f(3);
> writeln(typeof(f3).stringof);
> writeln(isInstanceOf!(Nullable, f3));
> }
> ```
>
> outputs
>
> ```
> Nullable!int
> false
> ```
In this case it's an instance of a type template, which only types would be. So, you want to check whether typeof(f3) is an instance of Nullable.
Ali
|
January 31, 2020 Re: Unexpected result of IsInstanceOf | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Jones | On Friday, 31 January 2020 at 00:51:45 UTC, Ben Jones wrote: > writeln(typeof(f3).stringof); > writeln(isInstanceOf!(Nullable, f3)); In the first one, you check typeof, but not in the second one. writeln(isInstanceOf!(Nullable, typeof(f3))); // true The template argument there was T above - the type, not the value. |
Copyright © 1999-2021 by the D Language Foundation