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

标签 c++

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

通过重载算术运算符,我可以享受这样一个事实,即任何使用它们的模板算法在我的类(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/

相关文章:

c++ - CMakeLists.txt结构

c++ - 如何将 GCC 类传递给 MSVC dll?

c# - CoCreateInstance 异常。在静态库上使用 REGSVR32 进行类注册?

c++ - 当参数是引用时,可变参数模板构造函数选择失败

c++ - Qt 中的 QDesktopWidget availableGeometry() 无法正常工作,需要垂直滚动才能查看完整图像

c++ - 是否有不关心结构/类布局的编译指示?如果不是,为什么?

java - 从 Java 调用 C、C++ 程序

c++ - 模板化函数只接受右值

c++ - 递归的可变参数模板函数

c++ - 重构为独立类后,QNetworkRequest (HTTP GET) 不会触发