기준은 C++ 17이다
1. if
이전
// C++ 17 이전
auto var(init_val);
if(condition)
{
// condition 1
// 접근 가능
}
else
{
// condition 2
// 접근 가능
}
// 접근 가능
if와 else 내에서 var에 접근 가능하다.
뿐만 아니라 auto var이 조건문 밖에서 정의되어있기 때문에
if와 else 밖에서도 var 접근이 가능하다.
이후
// c++ 17 이후
if(auto var(init_val); condition)
{
// conditon 1
// 접근 가능
}
else
{
// condition 2
// 접근 가능
}
// 접근 불가
if와 else 내에서는 var에 접근할 수 있지만
if와 else 밖에서는 var에 접근이 불가능 하다.
2. switch
이전
// C++ 17 이전
auto var (init_val);
switch(var)
{
case 1:
...
break;
case 2:
...
break;
}
switch문 또한 if문과 같이
switch 밖에서 var에 접근이 가능하다.
이후
// c++ 17 이후
switch(auto var (init_val); var)
{
case 1:
...
break;
case 2:
...
break;
}
익숙하지 않아서 가독성은 떨어지는 것 같지만
변수의 수명이 짧을수록 코드를 간결하게 유지하고, 리팩토링이 쉽게 해당 범위 내에서 변수의 개수를 줄여주는 것에 의의가 있다.
댓글