На мой взгляд, возможные объявления этой функции могут выглядеть так:
Вариант 1 — указать тип возвращаемого значения
Код: Выделить всё
template
std::enable_if_t make(int8_t first, int8_t second);
Код: Выделить всё
template
return_type make(int8_t first, int8_t second);
Мои вопросы
Является ли один из этих вариантов лучше или более надежным, чем другой? Мне кажется, что после успешной замены они оба дадут одно и то же, но, возможно, они обрабатывают ошибку замены по-разному?
Я знаю, что мне нужно быть осторожным с шаблонами функций, которые отличаются только значениями параметров шаблона по умолчанию; имеет ли это значение, поскольку значение по умолчанию в варианте 2 зависит от параметра шаблона, у которого нет значения по умолчанию?
Примечания
Я использую C+ +17, и это изменить нельзя, но ответы, касающиеся других стандартов, по-прежнему очень приветствуются! Кроме того, типы, используемые в моем проекте, являются пользовательскими типами, а не стандартными контейнерами, поэтому этот вопрос на самом деле не касается различных способов создания контейнеров.
Подробнее здесь: https://stackoverflow.com/questions/793 ... fication-v
Мобильная версия