[모던C++입문] 3.4 타입 추론과 정의

짜장범벅·2023년 11월 5일
0

모던CPP입문

목록 보기
11/11

3.4 타입 추론과 정의

3.4.1 auto 변수 타입

(생략)

3.4.2 표현식의 타입

decltype은 표현식의 타입을 반환하는 함수와 같다.

decltype(f(g(x, y, z)+3*x)) a = f(g(x, y, z)+3*x);

이 기능은 명시적 타입이 필요한 곳에서 매우 중요하다.

template<typename Vector1, typename Vector2>
auto operator+(const Vector1& v1, const Vector& v2){
    vector<decltype(v1[0]+v2[0])> v;
        //v1[0]+v2[0]을 수행하지는 않음

    ...
}

decltype은 타입 수준에서만 동작하며, 실제로는 연산을 수행하지 않는다. 즉 위 예제에서 v1이나 v2가 빈 벡터라도 상관 없다.

3.4.3 decltype(auto)

decltype(expr) v = expr;
decltype(auto) v = expr;

위 식에서 expr이 길다면 decltype(expr) 코드가 복잡해진다. 이 경우 아랫줄과 같이 decltype(auto)를 해주는 것이 좋다.

3.4.4 타입 정의하기

typedefusing을 이용해 타입을 정의할 수 있다. C++에서는 using을 사용하도록 하자.

typedef double value_type;
using value_type = double;

typedef double da1[10];
using da2 = double[10];

typedef float float_fun1(float, int);
using float float_fun2 = float(float, int);
profile
큰일날 사람

0개의 댓글