采用一种显式类型的函数

时间:2017-09-01 20:16:01

标签: c++ types compiler-errors type-safety

如何创建一个接受size_t但不接受int或任何其他隐式可转换类型的函数?

2 个答案:

答案 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) {}