У меня есть перегруженная пара функций, которые принимают один аргумент. Один занимает uint64_t
. Другой принимает int64_t
. Когда я передаю функцию uint32_t
функции, она корректно помечена как неоднозначная.Как устранить неоднозначность перегрузки функции
Как устранить эту двусмысленность, не прибегая к шаблонам? Я могу написать неглубокую оболочку, которая использует свойства типа для ее разрешения, но я бы предпочел. Я бы предпочел для подписанных типов разрешить подписанную перегрузку и неподписанные типы для решения неподписанной перегрузки.
Кроме того, я бы предпочел не иметь перегрузки для каждого целочисленного типа.
Сделать перегрузку, которая принимает 'uint32_t' и перенаправляет ее на функцию, которую вы хотите вызвать? – NathanOliver
Вам не нужна перегрузка для каждого целочисленного типа. Только те, у которых показатель конверсии больше или равен значению «int». Это 6 перегрузок. http://en.cppreference.com/w/cpp/string/basic_string/to_string – Brian
@Brian Как это работает, когда короткий передается функции? – Graznarak