自定义和标准类型的数学函数的统一接口
Uniform Interface for Math functions for custom and standard type
我在namespace a
中a::Vector
了一些自定义类型,为此我定义了一些数学函数a::abs
、a::pow
和a::isnan
等。我希望能够调用abs(T t)
,而不必担心T
的论点是double
还是a::Vector
。在任何地方正确使用abs
都可以使用 ADL a::Vector
a::abs
,但是默认使用 C
样式的 abs(int t)
函数,即使对于double
参数,我希望它使用 std::abs
或 fabs
。
我不想使用using std::abs
声明,因为这通常被认为是不好的。我有哪些选择可以为所有不同类型的统一界面abs(T t)
?
如果在 std
中定义了template<class T> abs(T x)
,那么您可以专门化该模板,但没有用于std::abs
的通用模板。向namespace std
添加重载是未定义的行为。https://stackoverflow.com/a/14403772
我会推荐using std::abs;
。using
特定功能通常没有错;只有using namespace
这很糟糕。
相关文章:
- 内联如何影响模块接口中的成员函数
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- unique_ptr实现接口时对已删除函数的引用
- 在多个头文件中从接口声明被覆盖的函数时,如何避免重复代码?
- 如何通过接口将函子分配给函数对象
- 如何创建一个接口,允许我访问C++中的按钮(和其他ui)函数,该函数是使用python中的MFC实现的
- C++接口的工厂函数实现
- 对已定义的接口析构函数的未定义引用
- 必须具有泛型接口的函数,但必须根据传递的子类(不知道它们是什么!)以不同的行为 - C++
- 在构造函数处将类对象强制转换为接口始终返回 NULL
- 在接口文件中使用模板时出现"not a type"错误的函数指针
- 从 COM 接口中的函数返回多个值
- 为什么在将多态行为与指向接口的指针一起使用时没有调用析构函数?
- 这是重载提供与非静态成员函数相同接口的静态成员函数的优雅方法吗?
- 从多个不同的实现类 c++ 调用接口函数
- 单冒号是什么意思 c++ 函数接口
- 编写现代函数接口以"produce a populated container"
- 为什么std::vector的构造函数接口在C++11中发生了变化
- 传递函数接口函数的指针
- 为什么shared_ptr无法解析函数接口中的继承关系?