C++03 & C++11 ( n3337) standard says that
4.1 Lvalue-to-rvalue conversion:
if the object is uninitialized, a program that necessitates this conversion has undefined behavior.
If I am not wrong, "reading" a value means performing an lvalue-to-rvalue conversion on it. So, reading value of an uninitialized automatic variable is undefined behaviour in C++.
But C++14 standard ( n4140) & C++17 standard ( n4659) has removed that wording completely
This wording was moved by http://wg21.link/cwg616 : The new wording is “if an indeterminate value is produced by an evaluation, the behavior is undefin...