null as parametr

Seb via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jul 30 22:32:28 PDT 2016


On Sunday, 31 July 2016 at 05:22:40 UTC, AntonSotov wrote:
> import std.stdio;
>
> void myFunc(T)(in T val) {
>     static if(is(T == string)) {
>         writeln("string: ", val);
>     }
>     static if(is(T : long)) {
>         writeln("long: ", val);
>     }
>     static if                         // WHAT HERE ?
>         writeln("null");
>     }
> }
>
> int main(string[] args)
> {
>     myFunc("abc");
>     myFunc(123);
>     myFunc(null);
>     return 0;
> }
> //--------------------------------------------------
> How to transfer <null> as parameter type?

just have a look with pragma(msg, T) what the compiler is 
inferring ;-)
-> typeof(null) seems to be a Voldemord type that can't be 
expressed directly, hence you can do:

     static if(is(T : typeof(null))) {
         writeln("null");
     }

... but does this really help you? A string can be null too, so 
whatever you do you most likely should check that with `val is 
null` too.


More information about the Digitalmars-d-learn mailing list