У меня есть две функции:неоднозначный вызов перегруженной функции
void DoSomething(const tchar* apsValue)
void DoSomething(size_t aiValue)
Теперь я хочу передать «0» как size_t:
DoSomething(0);
Компилятор выдает ошибку: «неоднозначный вызов перегруженной функция»
Чтобы решить эту проблему, я могу использовать static_cast, например:
DoSomething(static_cast<size_t>(0));
Или просто:
DoSomething(size_t(0));
Является ли один из них лучше, чем другие? Существуют ли какие-либо другие подходы к решению этого?
static_cast в любое время лучше, чем в стиле c-style, где это применимо. – iammilind
@iammilind size_t (0) не является литой в стиле c. Он создает новый size_t с '0' как значение –
@iammilind Почему? 'static_cast' предпочтительнее приведения в стиле C, где может возникнуть проблема с тем, какой тип броска стиля C разрешает: для указателей или ссылок. В противном случае ... вы бы напили 'static_cast < MyClass > (42)' или 'MyClass (42)', если вам нужен временный экземпляр 'MyClass'? –