[6.2.8] The value of an explicit use of the constructor for a builtin type is 0 converted to that type (§4.9.5). Thus, int() is another way of writing 0.
For a userdefined type T, T() is defined by the default constructor (§10.4.2), if any.
The use of the constructor notation for builtin types is particularly important when writing templates.
Then, the programmer does not know whether a template parameter will refer to a builtin type or a userdefined type (§16.3.4, §17.4.1.2).