c++ - std::min/std::max 为 "intrinsic-like"

标签 c++ c++11

我正在重写一个库,其中“接口(interface)”之一是全局数字变量(不要问)。

我将其替换为 UDT 的全局对象,该对象的作用类似于数字,支持 operator int() const

我的库的一些内部消费者将 std::max 与该全局变量一起使用。他们会得到编译错误,因为 std::max 只需要一个 T。

例如:

PseudoInt x;  // in library

// in consumer
void conumser()
{
    int y = std::max(5, x);  // will error now, because int and PseudoInt are not the same T
}

我最希望我的消费者不必使用react,比如 std::max<int>(5, x)

我是不是运气不好?

最佳答案

由于 std::max 是一个模板,因此您可以使用 PseudoInt 和 Int 为 std::max 提供专门化。

关于c++ - std::min/std::max 为 "intrinsic-like",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37211286/

相关文章:

c++ - 模棱两可的调用(从 char* 到 lambda 与 std::string 的转换)

c++ - 将二维数组传递给 c++ 中的函数,两个值都在 main 方法中输入

c++ - 在 C++ 中正确使用 map 迭代器

linux上的c++应用程序,在kill之前挂机

c++ - 静态类成员的初始化

c++ - 如何 `decltype` 仿函数运算符()?

c++ - 通常对函数名的非限定查找与对变量名的查找不同吗?

c++ - 在 C(也许是 C++)中寻找数值/多媒体/信号处理基准

c++ - 奇怪的 lambda 问题(编译器错误?)

c++ - 子类调用父复制分配而不是移动分配?