Предполагая, что у меня есть код, подобный приведенному ниже:
bool isString(char* arg) { return true; }
bool isString(const char* arg) { return true; }
bool isString(std::string arg) { return true; }
// Any other type...
template <typename type> bool isString(type arg) { return false; }
Вопрос в том, допускает ли C ++ любой вероятный способ сократить синтаксис ниже до чего-то похожего на концепцию ниже (синтаксическая стенография / sugar):
// Could be `char*`, `const char*` or `std::string` here.
bool isString([char*, const char*, std::string] arg) { return true; }
// Any other type...
template <typename type> bool isString(type arg) { return false; }
Примеры, представленные здесь, не обязательно предназначены для обнаружения строк, а скорее объясняют проблему выделения нескольких строк кода для перегруженных функций.
Представьте, что еслиЯ должен был проверить на 100+ типов данных, если они действительны или нет, я бы хотел быстро использовать более короткий способ кодирования, чем набирать все 100 перегруженных функций
Конечно, недостатокэта синтаксическая стенография заключается в том, что тип данных arg
не может быть дифференцирован (в отличие от стандартной перегрузки функций).