如何将 std.typecons.Typedef 与函数一起使用?

How can I use std.typecons.Typedef with functions?

我有:

typedef void function(int) handler = &noOp;

由于不推荐使用 typedef,我被告知使用别名(不允许设置默认初始值设定项)或 std.typecons.Typedef(允许)。但是,以下内容不起作用:

import std.typecons;
alias handler = Typedef!(void function(int), &noOp);

如何在没有 typedef 的情况下设置函数类型的初始值设定项?

这是了解基础知识的好例子 - 我认为了解 struct 的来龙去脉比 Typedef 更有帮助,因为你可以用它做更多的事情。执行此操作的方法如下:

void noOp(int) {} 
struct handler { 
    void function(int) fn = &noOp;  // here's the initializer
    alias fn this;  // this allows implicit conversion
} 
void main() { 
    handler h; 
    assert(h == &noOp); // it was initialized automatically!
    static void other(int) {} 
    h = &other; // and you can still reassign it
} 

alias this 可能有争议 - 它允许隐式转换为基本类型,如 alias,但它不同于 typedef。您还可以通过执行单独的构造函数、opAssign 重载等来自定义它,具体取决于您需要的确切行为。问我,我可以澄清,但你也会想玩它,看看你是否喜欢它现在的工作方式。