Lightning Talk: ?: - Jonathan Müller - C++Now 2026

원본 영상: Lightning Talk: ?: - Jonathan Müller - C++Now 2026
채널: CppNow

개요

Jonathan Müller는 ?:를 **조건부 표현식(conditional expression)**이라고 부르며 발표를 시작한다. 이어 정수, 열거형, 클래스 변환, 참조를 소재로 타입을 살펴본다. 각 사례에서 주목할 점은 피연산자의 타입과 그 사이의 변환 관계다.

정수: “int가 16비트라면?”

Müller는 “int가 16비트라면?”이라는 질문을 던진다. 정수가 등장하는 표현식의 타입을 살필 때, int의 크기 역시 고려할 조건으로 제시하는 대목이다.

00:48 — int가 16비트인 경우를 묻는 대목

이후에는 두 정수 피연산자를 놓고 승격과 공통 타입을 결정하는 과정으로 설명을 이어간다.

01:56 — 두 정수 피연산자를 설명하는 대목

열거형: 양쪽이 같은 타입인지 살핀다

열거형에서는 양쪽 피연산자가 같은 타입인지가 중요한 구분으로 등장한다. Müller는 둘 다 같은 열거형 타입이면 결과도 그 열거형 타입이 된다고 설명한다.

02:31 — 양쪽이 같은 열거형 타입인 경우를 설명하는 대목

클래스: 공통 변환 대상이 등장한다

클래스로 표현한 상수의 예제에서는 A1과 A2가 모두 A로 변환되는 관계를 제시한다. 여기서는 두 피연산자의 원래 타입뿐 아니라, 각각 어떤 타입으로 변환될 수 있는지도 살펴야 한다.

03:36 — A1과 A2가 모두 A로 변환되는 사례

참조: “거의 같은 타입”이라는 조건

발표 후반에는 양쪽이 “거의 같은 타입”의 lvalue 참조인 경우를 다룬다. Müller는 “거의 같다”는 표현을 쓴 이유가 기반 클래스 때문이라고 설명한다. 이어 rvalue 참조와 어느 한쪽에 const가 있는 경우로 논의를 확장한다.

04:44 — 거의 같은 타입의 lvalue 참조를 다루는 대목

핵심 정리

발표는 조건부 표현식의 타입을 살펴보는 질문을 여러 소재로 이어간다. 정수에서는 타입의 크기와 변환 과정이, 열거형에서는 양쪽 타입의 일치 여부가 등장한다. 클래스와 참조로 넘어가면 변환 가능한 대상, 기반 클래스 관계, const 여부까지 검토할 요소가 넓어진다.

이 흐름을 관통하는 질문은 두 피연산자의 타입이 어떤 관계에 있는가다. 익숙한 ?: 표현식도 그 관계를 살피면 더 세밀하게 읽을 수 있다.

출처