C++11 의 알기 쉬운 키워드로 auto 가 있다. 하지만 C++11에서는 데이터를 선언할때만 auto를 쓸수 있고 함수반환값에서는 사용이 안되었다.
하지만 C++14로 오면서 이부분이 해결되었다.
int TestNum() //C++11
{
return 10;
}
auto TestNumAuto() //C++14
{
return 10;
}
위와같이 return 타입을 auto로 하여도 컴파일러가 데이터 타입을 유추하여 타입을 지정한다.
하지만 몇가지 오류는 조심해야한다.
auto TestErr(int nNum) // return 타입이 int 타입과 double 타입이 존재하여 오류
{
if(nNum > 10)
return 0;
return 0.0;
}
auto Recursion(int nNum) //재귀 함수 호출시 첫 return 에서 데이터 형식을 유추 할수없어 오류
{
if(nNum > 10)
return Recursion(nNum - 1);
return nNum;
}
decltype는 주어진 변수의 타입을 알려주는 키워드로 기본적인 구조는 다음과 같다.
auto a = 100;
auto* b = &a;
auto k = 100;
decltype(a) c = 50; //변수 a의 타입인 int
decltype(b) d = &k; //변수 b의 타입인 int*
해당 키워드는 auto로 return 되어 데이터 형식의 구분이 어려울때 사용하면 유용하게 쓸수 있을꺼 같다.