#include <type_traits>    	// for std::enable_if, std::is_unsigned

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

int main(int argc, char ** argv) {
	int array[] = {1, 2, 3, 4, 5};
	someFunction(&array[0], (int)5);			// call with signed type
	someFunction(&array[0], (unsigned int)5);	// call with unsigned type
}