C++ 模板类/类型,可在最大值和最小值之间进行选择



我正在尝试编写一个模板化类。

template <<typename T>>
myclass {
  // ...
}

我希望T是这样的,如果我用适当的T实例化myclass obj<T>,该类应该能够在两个数字的最小值或最大值之间进行选择。即 myclass 根据情况使用 min 或 max 进行实例化。

我不介意使用 std::less/std::more/std:

:max/std::min 或任何内置的函子对象。

但是,我不希望在构造函数中使用枚举,然后根据枚举值调用最小或最大例程。我希望代码更干净一点。有什么想法吗?是否有可能在C++做到这一点

没什么大不了的。请考虑以下事项:

template<typename T> class MyClass {
public:
    int foo(int a, int b) const {
        return T()(a, b);
    }
};

现在,如果T是一个类型,其operator()返回两个参数中的最大值,那么您将返回最大值,并且与您希望应用的任何其他二进制算法相同。

[编辑] 我相信我没有完全理解你的问题的重点,@DeadMG的答案实际上是你要找的。

下面的模板允许您实例化一个类,给定 T、MIN、MAX 可以在 T 之间的 MIN 和 MAX 之间提供一些数字 X。

template<int T, int MIN, int MAX, int X = MIN + T/(MAX - MIN)>
class MyClass
{
  int foo() const
  {
    return X;
  }
};

最新更新