如何创建一个接受size_t但不接受int或任何其他隐式可转换类型的函数?
答案 0 :(得分:10)
使用重载:
template <typename T> void foo(T) = delete;
void foo(std::size_t t) {
// ...
}
答案 1 :(得分:0)
#include <type_traits>
#include <cstddef>
template <typename..., typename T, std::enable_if_t<std::is_same_v<T, std::size_t>>*...>
void f(T x) {}