값으로 새 변수를 만듭니다
참조와 top-level const는 떨어지고, 배열은 포인터로
붕괴될 수 있습니다.
타입 이름을 줄이는 편의 기능이지만, 참조와 const 보존 여부를 선언 형태로 분명히 골라야 합니다.
auto value;처럼 초기화식이 없으면 컴파일러가 타입을
정할 수 없습니다.
참조와 top-level const는 떨어지고, 배열은 포인터로
붕괴될 수 있습니다.
복사를 피하거나 원본을 수정해야 한다면 참조 형태를 선언에 직접 씁니다.
큰 객체를 복사하지 않으면서 수정 의도가 없음을 타입에 남깁니다.
10, 3.14, "Hello"는 각각
int, double, const char*로
추론됩니다.
std::vector<int>::iterator처럼 긴 타입은
auto it = v.begin()으로 의도를 유지합니다.
int,
double 같은 타입을 직접 씁니다.
추론 기준 auto를 쓸 때는 "타입 이름을
숨겨도 초기화식이 충분히 말해 주는가"와 "참조/const를 보존해야 하는가"를
함께 확인합니다.