I know it is because s.second is initialized by int(), but cant found the line in standard where is stated that int() is 0.
Here is the path you have to follow in the C++11 Standard - this answer uses Draft n3485 as a reference, which is more recent than the current official Standard.
Per Paragraph 8.5/11 of the C++11 Standard:
An object whose initializer is an empty set of parentheses, i.e., (), shall be value-initialized. [...]
Moreover, per Paragraph 8.5/8 of the C++11 Standard:
To value-initialize an object of type T means:
— if T is a (possibly cv-qualified) class type (Clause 9) with either no default constructor (12.1) or a
default constructor that is user-provided or deleted, then the object is default-initialized;
— if T is a (possibly cv-qualified) non-union class type without a user-provided or deleted default constructor,
then the object is zero-initialized and, if T has a non-trivial default constructor, default-initialized;
— if T is an array type, then each element is value-initialized;
— otherwise, the object is zero-initialized.
Finally (although this is quite intuitive), per Paragraph 8.5/6:
To zero-initialize an object or reference of type T means:
— if T is a scalar type (3.9), the object is set to the value 0 (zero), taken as an integral constant expression, converted to T;
— [...]