RepositoryC++USUnited States
codeinred

codeinred/recursive-variant

Recursive Variant: A simple library for Recursive Variant Types

99stars
9forks
2issues
3views

Thành tựu nổi bật

Những danh hiệu mới nhất của dự án

1
TINIX TRENDING·Chủ đề: recursive-types

#1 Repository Của Tháng

1
TINIX TRENDING·Chủ đề: variants

#1 Repository Của Tháng

1
TINIX TRENDING·Chủ đề: header-only-library

#1 Repository Của Tháng

🧩 rva::variant — Sum types đệ quy thật sự cho C++

Một giải pháp header-only nhẹ nhàng cho phép dùng rva::self_t để thay thế chính kiểu trong định nghĩa variant, tránh viết tay hàng loạt boilerplate.

rva::variant là một thư viện header-only cho C++20 phát triển bởi Recursive Variant Authority, cungấp khả năng định nghĩa các kiểu tổng đệ quy (recursive sum types) một cách tự nhiên — điều mà std::variant không hỗ trợ trực tiếp. Điều này đặc biệt hữu ích khi làm việc với cấu trúc dữ liệu như JSON, cây nhị phân, danh sách liên kết… nơi một kiểu cần tham chiếu đến chính nó.

✨ Điểm nổi bật

  • Hỗ trợ kiểu đệ quy: Dùng rva::self_t để chỉ nơi muốn chèn bản thân kiểu đang định nghĩa.
  • Dựa trên std::variant: Là lớp bọc mỏng (thin wrapper), giữ nguyên toàn bộ API và hành vi của std::variant.
  • Header-only: Không cần biên dịch riêng, chỉ cần #include là sử dụng được.
  • Giảm boilerplate đáng kể: Tự động sinh các hàm constructor, phép gán, so sánh và .emplace() cho kiểu đệ quy.
  • Tương thích C++20: Tận dụng tính năng mới như concept và template nâng cao.
  • Dùng cho JSON và cây: Dễ dàng biểu diễn các cấu trúc lồng nhau như giá trị JSON hoặc cây nhị phân.
  • Không thay đổi ngữ nghĩa: Các thao tác như std::visit, index(), get() hoạt động giống hệt std::variant.

💡 Vì sao đáng chú ý

std::variant trong C++ không cho phép một kiểu tham chiếu đến chính nó trong lúc định nghĩa, dẫn đến việc phải viết thủ công rất nhiều mã lặp lại để quản lý trạng thái, constructor, phép gán... rva::variant giải quyết điều này bằng cách thay thế rva::self_t bằng kiểu thực sự khi quá trình template được xử lý, giống như cách Haskell hay Rust hỗ trợ sum types đệ quy một cách trực quan.

Thích hợp cho bất kỳ dự án nào cần mô hình hóa dữ liệu đệ quy phức tạp mà vẫn muốn giữ sự an toàn kiểu và hiệu năng của std::variant.


#C #C++20 #RecursiveVariant #HeaderOnly #SumTypes #FunctionalProgramming #TiniX

Similar Projects

Discover other similar projects and AI models.

RepositoryC++
gabime/spdlog

Fast C++ logging library.

29.7k
Oct 16, 2026
RepositoryC++
changkun/modern-cpp-tutorial

📚 Modern C++ Tutorial: C++11 to C++26 On the Fly | https://changkun.de/modern-cpp/

25.9k
Oct 8, 2026
RepositoryC++
yhirose/cpp-httplib

A C++ header-only HTTP/HTTPS server and client library

16.9k
Oct 26, 2026
RepositoryC++
hanickadot/compile-time-regular-expressions

Compile Time Regular Expression in C++

3.9k
Sep 11, 2026
RepositoryC++
microsoft/proxy

Proxy: Next Generation Polymorphism in C++

3.0k
Jan 29, 2026
RepositoryC++
madmann91/bvh

A modern C++ BVH construction and traversal library

1.2k
Oct 16, 2026
RepositoryC++
mpark/variant

C++17 `std::variant` for C++11/14/17

714
Dec 7, 2022
Repository
AnthonyCalandra/modern-cpp-features

A cheatsheet of modern C++ language and library features.

21.9k
Oct 24, 2026
RepositoryHTML
federico-busato/Modern-CPP-Programming

Modern C++ Programming Course (C++03/11/14/17/20/23/26)

16.3k
Apr 19, 2026