模板参数修饰符

Template parameter modifier

本文关键字:参数      更新时间:2023-10-16

我有一个关于模板的问题。

template <typename A, typename B>
void someFunction (A* array, const B& numEl);

我想要nummel (->numberOfElements)是无符号的,但是const unsigned不会编译。数组中的元素个数永远不能是负数我总是使用long, int或short所以我用numEl unsigned

是有意义的

如果您只希望用户以unsigned类型调用您的函数,您可以使用如下代码:

template<typename A, typename B, typename = typename std::enable_if<std::is_unsigned<B>::value>::type>
void someFunction(A * array, B numEl) {
    // do something
}

还需要注意的是,由于您处理的是B的整型,因此不需要接受numl作为const引用。