태그: C++26
14편
-
C++ SIMD 최적화: SSE·AVX2·AVX-512·NEON 인트린직, 자동 벡터화, C++26 std::simd
C++ SIMD를 SSE·AVX2·AVX-512·NEON 인트린직, 자동 벡터화, C++26 std::simd로 정리합니다. float 합산이 -O3에서도 벡터화되지 않는 이유(-ffast-math), 메모리 대역폭 한계, -march=native 배포 사고와 런타임 디스패치(target_clones, __builtin_cpu_supports)까지 다룹니다.
-
C++26 Contracts: pre·post·contract_assert로 사전조건·사후조건 표현하기와 평가 의미
assert와 주석으로 적던 함수의 전제 조건을 C++26 Contracts(P2900)의 pre, post, contract_assert로 선언하는 방법을 설명합니다. ignore·observe·enforce·quick_enforce 평가 의미, 위반 핸들러, 배열 접근·리소스 관리 예제, assert·예외와의 비교를 다룹니다.
-
C++26 표준 확정: 리플렉션·Contracts·std::execution 등 주요 변경점
C++26에 들어간 정적 리플렉션, Contracts, 초기화하지 않은 변수 읽기의 erroneous behavior와 표준 라이브러리 하드닝, std::execution 비동기 모델을 코드와 함께 살펴봅니다. 컴파일러 지원 현황과 기존 프로젝트에서 먼저 해 볼 수 있는 일도 정리합니다.
-
C++ Fold Expressions 이해하기: 단항·이항부터 C++26 Pack Indexing까지
파라미터 팩 전체에 연산을 적용할 때 재귀 템플릿 대신 C++17 fold expression으로 펼치는 방법을 다룹니다. 단항·이항, 좌측·우측 fold의 전개 순서와 빈 팩 규칙, 쉼표 fold 활용, 커스텀 연산자 fold와 C++26 pack indexing까지 예제로 설명합니다.
-
C++26에서 달라지는 것: 리플렉션(^^), std::execution Sender/Receiver, std::simd, Contracts
C++26 주요 기능 정리. ^^ 연산자 기반 리플렉션, std::execution(P2300) Sender/Receiver 모델, std::simd, std::hive와 Contracts 등 기타 기능, 도입 시 주의점을 다룹니다.
-
C++ 직렬화 방식 비교: nlohmann·simdjson·Glaze JSON, 바이너리, Protobuf, C++26 리플렉션
C++ Serialization: JSON nlohmann/simdjson/Glaze, Protobuf v29, C++26 Reflection P2996R13, cereal. 성능 비교·버전 호환성·자동 직렬화.
-
C++ 코드 생성 방식 비교: 템플릿, X-Macro, Clang libTooling, Protobuf, C++26 리플렉션
직렬화·RPC 스텁·에러 코드 매핑처럼 반복되는 C++ 코드를 템플릿, X-Macro, Clang libTooling, Protobuf·FlatBuffers, Python 스크립트, C++26 리플렉션 중 무엇으로 생성할지 비교하고, CMake 통합과 생성 코드 관리에서 생기는 문제를 정리합니다.
-
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++ 컴파일 타임 리플렉션 | C++26 Reflection·magic_enum·매크로 직렬화·검증
구조체가 늘 때마다 to_json·from_json을 손으로 쓰는 반복을 줄이려고 C++26 Reflection(P2996)의 개념과 예제를 살펴보고, 지금 쓸 수 있는 magic_enum과 매크로·X-Macro 기반 멤버 순회를 비교합니다. magic_enum의 제약과 흔한 에러도 다룹니다.
-
C++26 프리뷰: Reflection과 신규 표준 라이브러리 제안들 [#44-1]
구조체가 바뀔 때마다 to_json·from_json을 다시 쓰는 문제를 C++26 Reflection(P2996)이 어떻게 줄이는지 멤버 순회와 splice 예제로 살펴봅니다. std::execution의 sender/receiver 모델, Contracts, 표준에 들어가지 않은 기능도 짚습니다.
-
루프가 병목일 때: 자동 벡터화, std::execution 병렬 정책, SSE·AVX2·AVX-512 인트린직
C++ SIMD와 병렬 알고리즘 정리. 루프 병목에서 출발해 std::execution 정책, 자동 벡터화 조건, SSE·AVX2·AVX-512 인트린직 사용법, 자주 나는 에러와 성능 벤치마크를 다룹니다.
-
C++23에서 실제로 쓸 기능: std::expected, mdspan, deducing this, auto(x)
C++23 주요 기능 정리. 예외 없이 에러를 다루는 std::expected, 다차원 배열 뷰 mdspan, CRTP를 대체하는 deducing this, auto(x) decay-copy, assume 속성과 C++20/17에서의 마이그레이션을 다룹니다.
-
C++ 가변 인자 템플릿: 파라미터 팩 재귀 전개, Fold Expression, 완벽한 전달
C++ 가변 인자 템플릿 정리. template<typename... Args>와 파라미터 팩, 재귀 전개 패턴, C++17 Fold Expression, std::tuple 이해, 완벽한 전달과 자주 나는 에러를 예제로 다룹니다.
-
CMake 3.31로 시작하는 C++23 Modules와 크로스플랫폼 빌드
g++ 명령을 손으로 치던 빌드를 CMakeLists.txt로 옮기는 과정을 Hello World부터 멀티파일 프로젝트까지 따라가며, Make와 Ninja 생성기 차이, Debug와 Release 빌드, find_package로 외부 라이브러리를 연결하는 방법을 복사해 쓸 수 있는 예제로 설명합니다.