I would like to ask why using variables that are not initialized is considered non type-safe?

I'm reading Bjarne Stroustrup's beginner book(Programming Principles and Practice Using C++) from the C++ book guide on this site. 

There is a part in the book about type-safety that states : 

> 
> A program - or a part of a program - is type-safe when objects are
>  used only according to the rules for their type. For example, using a
>  variable before it has been initialized is not considered type-safe.
> 
> 
> 

Then the book provides the following code as an example:

```
 int main() {
        double x; // we "forgot" to initialize
                  // the value of x is undefined

        double y = x; // the value of y is undefined
        double z = 2.0+x; // the meaning of + and the value of z are undefined
 }

```

I understand that a local variable that is not initialized will have an
indeterminate value and reading this variable will cause undefined behavior. What I do not understand is how is it connected to type-safety. We still know the types from the variable's definition.

Why does the comment in the above code states that the meaning of + is undefined when both 2.0 and x are double, and the + is defined for double + double?