D:创建模板化对象数组

sor*_*bet 3 arrays templates d

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

我觉得文档很神秘.我所理解的是模板在编译时生成代码,但是我没有看到什么阻止我创建数组Regex.


这里有一个存在的问题同样的问题在计算器上,但它使用C++交易,不D.

Val*_*ity 6

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

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

Regex[] regexes;
Run Code Online (Sandbox Code Playgroud)

成:

Regex!char[] regexes;
Run Code Online (Sandbox Code Playgroud)

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