一个专用 D 模板中有多种类型
假设我必须以某种方式处理 ushort
和 uint
,但 string
有所不同。所以我想我需要一个专门用于 string
的模板,以及用于 ushort
和 uint
的其他模板。是吗?
// for most
void func(T)(T var) { ... }
// for uint and ushort
void func(T: uint, ushort)(T var) { ... }
这就是想法,尽管代码无法编译。这是有效还是非常糟糕?
Say I have to deal ushort
and uint
some way, but string
differently. So guess I need one specialized template for string
and other to both ushort
and uint
. Is it?
// for most
void func(T)(T var) { ... }
// for uint and ushort
void func(T: uint, ushort)(T var) { ... }
That is the idea, although the code can't compile. It's valid or very bad?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个:
您也可以在一个函数中完成它:
Try this:
You could also do it in one function:
如果您只需要特定类型,请按照 Peter 的回答。
如果您想涵盖所有整数/数字数据和所有字符串(包括 wstring 和 dstring)数据类型,那么您可以使用
std.traits
模块:If you need only specific types, follow Peter's answer.
If you would like to cover all integral/numeric data and all string (including wstring and dstring) data types, then you could use helpers from
std.traits
module:你没有准确理解他的意思
混合多模板参数应该这样做
You are not precise understand his meaning
mix multi template parameters should do like this