gpt4 book ai didi

c++ - 为自定义类型重载标准数学函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:42 27 4
gpt4 key购买 nike

假设我正在编写一个表示数学对象的类,为它定义各种标准操作是有意义的。

通过重载算术运算符,我可以享受这样一个事实,即任何使用它们的模板算法在我的类(class)中都能按预期工作。但是,如果算法使用类似 std::pow 的东西怎么办?

标准似乎声明只允许在 std 命名空间中对函数进行模板特化,这意味着我不允许编写自己的 std::pow 我的课。但如果情况确实如此,那么确保通用性的最佳方法是什么?

最佳答案

Yakk 的评论是正确的答案。您将 pow 放入命名空间,就像标准将其 pow 放入 std:: 一样。 Argument Dependent Lookup 意味着 pow(x,y) 将在 xy 类型的命名空间中查找。

有经验的库编写者知道如何有效地使用 ADL,但老实说,我不会立即知道有充分理由对未知类型的对象调用 pow 的库。

关于c++ - 为自定义类型重载标准数学函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369759/

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