8 Expressions [expr]

8.2 Postfix expressions [expr.post]

8.2.3 Explicit type conversion (functional notation) [expr.type.conv]

A simple-type-specifier или, typename-specifier за которым следует необязательный аргумент в скобках expression-listили braced-init-list (инициализатор), создает значение указанного типа с учетом инициализатора. Если тип является заполнителем для выведенного типа класса, он заменяется типом возвращаемого значения функции, выбранной разрешением перегрузки class template deduction для оставшейся части этого раздела.

Если инициализатор представляет собой одиночное выражение в скобках, выражение преобразования типа эквивалентно (по определенности и, если определено по смыслу), соответствующему cast expression. Если тип равен, cv void а инициализатор есть (), выражение является значением указанного типа, которое не выполняет инициализацию. В противном случае выражение является prvalue указанного типа, объект результата которого находится direct-initialized с инициализатором. Для выражения формы T(), T не должно быть тип массива.