Объявите удалённую перегрузку process(char). Она будет точнее подходить для аргумента char, чем преобразование к int, и компилятор отклонит такой вызов.
Запрет передачи аргумента типа char в функцию
Объявите удалённую перегрузку process(char). Она будет точнее подходить для аргумента char, чем преобразование к int, и компилятор отклонит такой вызов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Составьте программу, в которой попытка вызвать функцию с параметром типа char будет недопустима.
# include <iostream>
void process(int num) {
// реализация функции
}
int main() {
process(10); // корректный вызов
process('3'); // должен быть запрещён компилятором
return 0;
}
Ответ
Объявите удалённую перегрузку process(char). Она будет точнее подходить для аргумента char, чем преобразование к int, и компилятор отклонит такой вызов.
void process(int num) {
// Работа с целым числом.
}
void process(char) = delete;
int main() {
process(10);
// process('3'); // Ошибка: выбрана удалённая перегрузка.
}
Это запрещает именно тип char. signed char, unsigned char и явное преобразование к int — другие случаи. Если требование состоит в запрете всех типов кроме int, понадобится более строгий контракт перегрузок или constraints.