지난번 std::optional에 이어, 오늘은 C++17의 또 다른 강력한 무기인 std::variant에 대해 이야기해 보려고 한다. optional이 '값이 있거나 없거나'의 두 가지 상태를 다뤘다면, variant는 한 걸음 더 나아가 여러 가지 정해진 타입 중 하나가 될 수 있는 상태를 우아하게 처리한다.예전엔 우리 어떻게 했더라? (feat. 공용체와 보이드 포인터)하나의 변수가 여러 타입 중 하나를 가져야 하는 상황. 생각보다 흔하다. 네트워크 메시지는 '인증 요청'일 수도, '데이터 전송'일 수도 있다. UI 이벤트는 '마우스 클릭'일 수도, '키보드 입력'일 수도 있다. 이런 걸 처리하기 위해 예전에는 보통 이런 방법을 썼다.union과 enum의 조합: C 스타일의 전통적인 방식. un..
오랜만에 C++ 관련 글을 쓰는 것 같다. 오늘은 C++17에 등장한 이후로 나의 '최애' 기능 중 하나가 된 std::optional에 대해 이야기해 보려고 한다. 특히 현업에서 골치 아팠던 문제를 optional이 얼마나 우아하게 해결해 줬는지, 실제 경험을 바탕으로 풀어볼까 한다.예전엔 우리 어떻게 했더라? (feat. 널 포인터와 마법의 숫자)함수에서 '값이 없음' 또는 '실패'를 어떻게 표현했는지 돌이켜보자. 아마 대부분 비슷할 것이다.포인터를 반환하며, 실패 시 nullptr 반환: 가장 흔한 방식. 하지만 호출하는 쪽에서 잊지 않고 꼭 널 체크를 해줘야만 한다. 이걸 깜빡하면? 바로 런타임 에러와 함께 프로그램이 뻗어버린다. (그리고 이런 버그는 꼭 새벽에 터진다...)'마법의 숫자'나 특정..
- Total
- Today
- Yesterday
- react
- ios
- 부동산분석
- 내집마련
- Frontend
- 카카오톡
- ChatGPT
- Java
- JavaScript
- MacOS
- 재테크
- SWiFT
- Linux
- openai
- 프로그래밍
- AI
- go
- 부동산
- 오리역
- 개발자
- 카톡업데이트
- 주식투자
- 생각
- Spring
- reactjs
- HTML
- Python
- CSS
- golang
- Backend
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |