aka*_*nuk 6 scalar templates d
我有两个函数:一个是向量的标量乘法,另一个是向量矩阵乘法:
pure T[] mul(S, T)(S s, T[] a)
Run Code Online (Sandbox Code Playgroud)
和
pure T[] mul(T)(T[] a, T[][] B)
Run Code Online (Sandbox Code Playgroud)
当然,这会导致冲突,S
也可能是矢量,因此第一个模板覆盖了第二个模板.我如何告诉编译器,我只想要标量类型S
?
Pet*_*der 10
您需要使用模板约束.
pure T[] mul(S, T)(S s, T[] a) if (isScalarType!S)
Run Code Online (Sandbox Code Playgroud)
这声明,当模板只应视为isScalarType!S
是true
.
在D中,标量类型是数字类型,字符类型和bool
.std.traits
如果您愿意,可以使用其他特征进一步限制(例如isNumeric
或isFloatingPoint
).
归档时间: |
|
查看次数: |
81 次 |
最近记录: |