【发布时间】:2014-04-29 18:41:15
【问题描述】:
我可以在 Vibed 的 Diet 源代码中看到 void compileDietString(string diet_code, ALIASES...)(OutputStream stream__) 函数。
我看到它需要无限数量的别名作为模板参数。
这些别名是什么?我很难通过源代码弄清楚,它使用了很多我不太了解的概念,例如特征和混合。
【问题讨论】:
我可以在 Vibed 的 Diet 源代码中看到 void compileDietString(string diet_code, ALIASES...)(OutputStream stream__) 函数。
我看到它需要无限数量的别名作为模板参数。
这些别名是什么?我很难通过源代码弄清楚,它使用了很多我不太了解的概念,例如特征和混合。
【问题讨论】:
这些参数是从render 和renderCompat 传递过来的。来自the documentation of renderCompat:
所有以下参数必须是类型和字符串对,每个参数指定一个参数。参数值可以作为与模板参数指定的类型相同的值传递,也可以作为存储了相同类型的 Variant 传递。
例子:
string title = "Hello, World!";
int pageNumber = 1;
res.renderCompat!("mytemplate.jd",
string, "title",
int, "pageNumber")
(title, pageNumber);
【讨论】:
render!("userinfo.jd", username)(res); ~ vibed.org/docs#http-routing
render 不是renderCompat。 render 使用编译时自省来查询标识符类型和名称。在renderCompat 中,它们是明确指定的。