블로그
-
constexpr 기초부터 C++26까지: constexpr 함수·생성자, const와의 차이, 확장된 규칙
C++ constexpr 정리. constexpr 변수와 함수, 생성자, const와의 차이, C++14/20/23 확장, C++26에서 추가되는 기능(void* 캐스트, placement new, 예외, 리플렉션)과 자주 만나는 컴파일 에러를 다룹니다.
-
C++26 리플렉션 기초: ^^ 연산자, std::meta::info, template for로 멤버 순회하기
C++26에 채택된 정적 리플렉션(P2996)의 실제 문법을 정리합니다. ^^ 연산자와 std::meta::info, identifier_of·nonstatic_data_members_of·access_context, [: :] 스플라이스, template for와 define_static_array, [[=...]] 어노테이션, 컴파일러 지원 현황과 C++20 대안까지 다룹니다.
-
C++ 컴파일 타임 프로그래밍 기법 | 런타임 오버헤드 제거와 constexpr·consteval 실전
런타임 오버헤드를 줄이기 위한 컴파일 타임 프로그래밍. constexpr 함수, if constexpr, consteval(C++20), 템플릿 메타 vs constexpr 비교, 성능 벤치마크, 프로덕션 패턴까지.
-
C++ type traits 활용: 표준 traits, std::enable_if, 커스텀 traits 작성
정수만 받아야 할 템플릿에 vector를 넘겨 긴 에러가 나는 상황에서 출발해 is_integral·decay 같은 표준 traits, enable_if를 두는 위치별 차이, void_t로 멤버 존재를 검사하는 커스텀 traits를 다룹니다. if constexpr로 대체할 시점도 설명합니다.
-
C++ 컴파일 타임 리플렉션 | C++26 Reflection·magic_enum·매크로 직렬화·검증
구조체가 늘 때마다 to_json·from_json을 손으로 쓰는 반복을 줄이려고 C++26 Reflection(P2996)의 개념과 예제를 살펴보고, 지금 쓸 수 있는 magic_enum, Boost.PFR, X-Macro 기반 멤버 순회를 비교합니다. magic_enum의 제약과 흔한 에러도 다룹니다.
-
2026년 Boost 라이브러리 훑어보기: Asio·Beast·Filesystem 설치와 활용
Boost를 apt·vcpkg·소스로 설치해 CMake find_package로 연결하는 과정, Asio·Filesystem·Regex·Program_options 예제, undefined reference·ABI 불일치 같은 링크 에러 해결, 표준 라이브러리로 옮길 시점까지 다룹니다.
-
C++ nlohmann/json 실전: 파싱·커스텀 타입 직렬화·에러 처리와 자주 틀리는 동작
nlohmann/json으로 JSON을 파싱하고 구조체와 변환하는 방법, operator[]·value()·at()의 차이, 키 순서가 바뀌는 이유와 ordered_json, float→int 무음 변환, SAX 파싱, simdjson·RapidJSON과 고르는 기준까지 정리합니다.
-
spdlog로 C++ 로깅하기: 다중 싱크, 로테이션, 비동기 로깅과 싱크 수명 함정
C++ spdlog 사용법. 설치와 설정, 로거와 레벨, 콘솔·파일·로테이션 다중 싱크, 커스텀 포맷, 비동기 로깅, 싱크 생명주기와 스레드 안전성 실수, 동기 대비 성능과 구조화 로깅을 다룹니다.
-
C++ 소켓 프로그래밍: TCP/UDP 구현, SO_REUSEADDR 같은 소켓 옵션, select·poll·epoll 비교
TCP 서버와 클라이언트를 에러 처리와 EINTR 재시도까지 포함해 구현하고, SO_REUSEADDR·SO_KEEPALIVE·TCP_NODELAY를 언제 켜는지 설명합니다. 논블로킹 소켓과 select·poll 멀티플렉싱, EADDRINUSE·ECONNRESET·EPIPE 같은 에러 대처도 다룹니다.
-
C++로 HTTP 클라이언트·서버 구현하기: 파서, Beast, Keep-Alive, 청크 인코딩, 타임아웃
TCP로 받은 바이트가 요청 단위로 끊겨 오지 않는 문제에서 출발해 HTTP 파서를 직접 구현하고 Boost.Beast로 클라이언트와 비동기 서버를 만듭니다. Keep-Alive 연결 풀, 청크 인코딩, 타임아웃, body limit 초과와 CRLF 인젝션도 다룹니다.