gpt4 book ai didi

templates - 如何确保模板类型是 D 中的标量?

转载 作者:行者123 更新时间:2023-12-04 14:01:34 25 4
gpt4 key购买 nike

我有两个函数:一个是向量的标量乘法,另一个是向量矩阵乘法:

pure T[] mul(S, T)(S s, T[] a)


pure T[] mul(T)(T[] a, T[][] B)

当然这会导致冲突,如 S也可以是向量,因此第一个模板覆盖第二个。我如何告诉编译器,我只想标量类型为 S ?

最佳答案

您需要使用 template constraint .

pure T[] mul(S, T)(S s, T[] a) if (isScalarType!S)

这声明模板仅在 isScalarType!S 时才被考虑。是 true .

isScalarType 可以在 std.traits 中找到.

在 D 中,标量类型是数字类型、字符类型和 bool .您可以进一步限制使用来自 std.traits 的其他特征。如果您愿意(例如 isNumericisFloatingPoint )。

关于templates - 如何确保模板类型是 D 中的标量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com