To value initialize an object of type T, one would do something along the lines of one of the following:
T x = T();
T x((T()));
<
7.1.5.2:
The simple-type-specifiers specify either a previously-declared user-defined type or one of the fundamental types`
This implies that unsigned int i = unsigned int() is legal, since unsigned int is a fundamental type (and thus a simple-type-specifier, see 3.9.1).
same applies for types like:
long double
long long
long long int
unsigned long
unsigned long long int
short int
...