D:创建模板对象数组
D: Creating an array of templated objects
我正在尝试创建一个包含 Regex
个对象的数组,如下所示:Regex[] regexes;
。
编译失败 main.d(46): Error: template std.regex.Regex(Char) is used as a type
.
我觉得文档很神秘。我所了解的是模板在编译时生成代码,但我看不出是什么阻止我创建 Regex
.
数组
Whosebug 上有一个 existing question 有同样的问题,但它处理的是 C++,而不是 D。
如果不首先使用类型实例化模板,则无法创建正则表达式对象。这是因为实际类型是在编译时根据您提供的实例化类型生成的。 Regex 本身不是实际类型,它只是一个模板函数,允许您在实例化时生成一个类型。
在这种情况下,您可能想要更改:
Regex[] regexes;
进入:
Regex!char[] regexes;
告诉编译器您的正则表达式包含字符而不是某些派生类型。这具体意味着您正在使用 char 类型实例化 Regex 模板。
我正在尝试创建一个包含 Regex
个对象的数组,如下所示:Regex[] regexes;
。
编译失败 main.d(46): Error: template std.regex.Regex(Char) is used as a type
.
我觉得文档很神秘。我所了解的是模板在编译时生成代码,但我看不出是什么阻止我创建 Regex
.
Whosebug 上有一个 existing question 有同样的问题,但它处理的是 C++,而不是 D。
如果不首先使用类型实例化模板,则无法创建正则表达式对象。这是因为实际类型是在编译时根据您提供的实例化类型生成的。 Regex 本身不是实际类型,它只是一个模板函数,允许您在实例化时生成一个类型。
在这种情况下,您可能想要更改:
Regex[] regexes;
进入:
Regex!char[] regexes;
告诉编译器您的正则表达式包含字符而不是某些派生类型。这具体意味着您正在使用 char 类型实例化 Regex 模板。