D:创建模板化对象数组

时间:2015-07-27 12:07:03

标签: arrays templates d

我尝试创建一个Regex个对象数组,如下所示:Regex[] regexes;。 编译因main.d(46): Error: template std.regex.Regex(Char) is used as a type而失败。

我发现文档含糊不清。我理解的是,模板会在编译时生成代码,但我不知道是什么阻止我创建Regex数组。

StackOverflow上有existing question但问题相同,但它处理的是C ++,而不是D。

1 个答案:

答案 0 :(得分:6)

如果没有首先使用类型实例化模板,则无法创建正则表达式对象。这是因为实际类型是在编译时根据您提供的实例化类型生成的。正则表达式本身不是一个实际类型,它只是一个模板函数,允许您在实例化时生成一个类型。

在这种情况下,您可能想要更改:

Regex[] regexes;

成:

Regex!char[] regexes;

告诉编译器你的正则表达式包含字符而不是某些派生类型。这意味着您将使用char。

类型实例化Regex模板