【问题标题】:Overloading standard mathematical functions for custom types为自定义类型重载标准数学函数
【发布时间】:2014-01-27 07:42:00
【问题描述】:

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

通过重载算术运算符,我可以享受这样一个事实,即任何使用它们的模板化算法在给定我的课程时都会按预期工作。但是如果算法使用像 std::pow 这样的东西呢?

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

【问题讨论】:

  • 让他们通过 adl 使用您的pow

标签: c++


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2012-03-12
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多