也许是D中的类型

Koz*_*oss 2 templates types nullable d type-conversion

我正在尝试定义一个值类型,它包含一个size_t或一个null(这就是我所说的'可能的类型').我想要做的是这样的事情(相关类型是Maybe!size_t:

 Maybe!size_t something_which_could_fail (int foo) {
      if (foo < 0) { return null;}
      else { return foo;}
 }
Run Code Online (Sandbox Code Playgroud)

我该如何实现这样的事情?理想情况下,我希望能够使它成为一个模板(所以我也可以有其他Maybe类型),并且可能如上所述从可能到非可能类型的转换(尽管如果不是这样,我不介意进行类型转换)可能).如果我可以做这样的事情也会很好:

Maybe!size_t a = 50;
Maybe!size_t b = null;
Run Code Online (Sandbox Code Playgroud)

Koz*_*i11 10

在phobos库中Nullable类型怎么样?http://dlang.org/phobos/std_typecons.html#.Nullable

以及D论坛中的其他一些信息: 关于Option(Maybe)类型的D论坛帖子