我尝试创建一个Regex
个对象数组,如下所示:Regex[] regexes;
。
编译因main.d(46): Error: template std.regex.Regex(Char) is used as a type
而失败。
我发现文档含糊不清。我理解的是,模板会在编译时生成代码,但我不知道是什么阻止我创建Regex
数组。
StackOverflow上有existing question但问题相同,但它处理的是C ++,而不是D。
答案 0 :(得分:6)
如果没有首先使用类型实例化模板,则无法创建正则表达式对象。这是因为实际类型是在编译时根据您提供的实例化类型生成的。正则表达式本身不是一个实际类型,它只是一个模板函数,允许您在实例化时生成一个类型。
在这种情况下,您可能想要更改:
Regex[] regexes;
成:
Regex!char[] regexes;
告诉编译器你的正则表达式包含字符而不是某些派生类型。这意味着您将使用char。
类型实例化Regex模板