创建一个模板对象的数组

3
我正在尝试创建一个Regex对象的数组,代码如下:Regex[] regexes;。编译失败并出现main.d(46): Error: template std.regex.Regex(Char) is used as a type的错误提示。
我发现文档太过晦涩难懂。我只知道模板会在编译时生成代码,但是我不明白为什么无法创建Regex数组。
在StackOverflow上已经有了一个既有的问题与相同的问题,但是它处理的是C++,而不是D语言。
1个回答

6

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

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

Regex[] regexes;

into:

Regex!char[] regexes;

告诉编译器你的正则表达式包含字符,而不是一些派生类型。这具体意味着你正在使用类型char实例化Regex模板。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接