프로그래밍 공부
작성일
2024. 1. 8. 19:39
작성자
WDmil
728x90

1.1.12 타입 추론

 

타입 추론(type Infernerce)는, 컴파일러가 표현식으로부터 타입을 자동적으로 연역해내도록 한다.

 

타입추론을 위해 두개의 키워드 auto와 decltype이 추가되었다.

 

C++14부터는 decltype(auto)로 조합하여 사용할 수도 있다.


auto 키워드

 

auto 키워드는 네 가지 전혀 다른 의미를 가지고 있다. 첫번쨰 사용 예는, 어떤 변수의 타입을 컴파일 타임에 자동적으로 연역해내는 것이다.

auto x = 123;

위의 x는 자동적으로 int타입으로 변환된다.

 

그러나, int대신 auto를 타이핑 했을 뿐, 그다기 효용이 없다.

 

하지만, 복잡한 타입의 경우, 효과가 있다.

 

예를들어, 함수 getFoo() 의 리턴타입을 추론하기 힘들다고 가정하면, 리턴값을 변수에 대입할 때. 그 타입을 일일이 타이핑 해야한다.

 

그러한 복잡한 리턴값은 사용자가 임의로 정의한 리턴타입일 수 있다.

 

하지만, auto키워드를 사용하면, 컴파일러에 타입결정을 맡길 수 있다.

auto result = getFoo();

 

이렇게 auto타입에 대한 예시는,

 

자동 변수 타입지정,

새로운 함수 정의문법,

자동 함수 리턴타입,

제네릭 람다 표현식 으로 4가지가 있다.


decltype 키워드

 

decltype키워드는, 표현식을 인자로 받아서, 그표현식의 결과 타입이 무엇인지 알아낸다.

int x = 123;
decltype(x) y = 456;

일때, x가 int타입이라는 사실로부터 y의 타입을 int로 연역한다.

 

새로운 함수 문법에서 auto키워드와 마찬가지로, decltype은 해당 값이 무엇인지 표현해준다.

728x90