堆分配什么的语法?

Syntax to heap allocate anything?

是否有语法、模板或函数可以让我从本质上将任何值转换为指向该值的指针? IE。将它复制到 gc 堆和 return 指向它的指针? "new" 不适用于所有类型,std.experimental.allocator 不适用于 ctfe,并且两者似乎都无法为委托提供指针。

您可以将相关数据放在 struct 中,然后在该结构上使用 new 关键字。

T* copy_to_heap(T)(T value) {
        // create the struct with a value inside
        struct S {
                T value;
        }
        // new it and copy the value over to the new heap memory
        S* s = new S;
        s.value = value;
        // return the pointer to the value
        return &(s.value);
}

void main() {
        // example use with a delegate:
        auto dg = copy_to_heap(() { import std.stdio; writeln("test"); });
        (*dg)();
}

这假设您已经有一个值可以复制,但这可能更容易,而且无论如何您都会这样做。但是您也可以根据需要调整代码以删除该要求(例如,可能只是通过 typeof.init)。