Thread overview
Unexpected result of IsInstanceOf
Jan 31, 2020
Ben Jones
Jan 31, 2020
Ali Çehreli
Jan 31, 2020
Adam D. Ruppe
January 31, 2020
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
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
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.