d不能创建匿名模板

原文

void foo(alias callback)()
{
    callback!5;
}

static void print(int i)() { writeln(i); }
foo!print;

如何合并后2行为1行?
我不理解,但这好像工作:

void foo(alias callback)()
{
    import std.stdio : writefln;
    callback.writefln!"%s";
}

void main()
{
  auto i = [ 1, 2, 3 ];
  auto s = ["foo", "bar", "zoo"];

  foo!i;
  foo!s;

  foo!"hello, world!";

  enum a = 11, b = 22;
  foo!(a + b);
} /*
  [1, 2, 3]
  ["foo", "bar", "zoo"]
  hello, world!
  33
*/

匿名模板是不行的.

// 命名模板:
static void print(int i)() {
    import std;
    writeln(i);
}

void main() {
    foo!print;
}

因为有print才工作.匿名模板不行,像λ一样传递模板.

foo!((int i)() {
    import std;
    writeln(i);
});

'(int i)()'期望定义模板.

posted @   zjh6  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示