在有些需求的情况下,我们期望调用接口的方法,期望传入的类型必须是我想要的类型如何做呢?譬如有如下的类型定义
struct OnlyInt {
void f(int i) {
// code here
}
};
OnlyInt oInt;
oInt.f(1);// 可以
oInt.f(1.0);// 也可以,那如何禁止这做非法呢?
下面我们来修改一下上面的类的定义
struct OnlyInt {
void f(int i) {
}
template void f(T) = delete;// 禁止非整形调用
};
OnlyInt oInt;
oInt.f(1);// 可以
oInt.f(1.0);// 不可以,编译报错