Это все говорит гипотетически, заметьте, потому что C ++ разработан комитетом, который должен рассмотреть множество особых случаев и мелочей.
При этом, C ++ явно не рекомендует использовать (type)val
синтаксис; static_cast
, dynamic_cast
и другие явные приведения предпочтительны, поскольку это значительно облегчает обнаружение ошибок, возникающих в результате неправильных приведений.
Фактически, как упоминается в другом ответе / комментарии, в указанном c в вашем вопросе (инициализация переменной), вы можете использовать auto
для этого типа переменной и принудительно установить тип инициализатора, например, static_cast
, например так:
auto p = static_cast<PMY_OBJECT>(v);
Это на самом деле довольно часто; Я видел, как он использовал и использовал его, по крайней мере, пару раз. Однако обратите внимание, чтобы не использовать над в тех случаях, когда в этом нет необходимости, поскольку в конечном итоге вы можете отменить множество преимуществ, которые auto
приносит в первую очередь.
Позволяя (auto)
(что по сути является принудительным принуждением), вы представляете все проблемы, связанные с приведением в стиле C, для очень небольшого удобства.