4 điểm bởi GN⁺ 2025-04-27 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • GCC 15 đã bổ sung hàng loạt tính năng C++26, đồng thời cải thiện một số tính năng của C++23
  • Các bổ sung chính gồm Pack Indexing, Variadic Friends, chỉ rõ lý do xóa, câu lệnh điều kiện với structured binding v.v.
  • Các tùy chọn trình biên dịch và cảnh báo mới cũng được giới thiệu, giúp cải thiện trải nghiệm nhà phát triển
  • Hỗ trợ C++ module được tăng cường và tốc độ biên dịch template đã được tối ưu
  • GCC 15 đã được chọn làm trình biên dịch mặc định của Fedora 42 và sắp được cung cấp trong Red Hat GCC Toolset

Các tính năng C++ mới trong GCC 15

  • GCC 15.1 đã được phát hành vào ngày 25/4/2025 và chính thức đưa vào nhiều tính năng C++26
  • Tiêu chuẩn mặc định vẫn là gnu++17, và có thể kích hoạt các tính năng mới bằng -std=c++23, -std=c++26 v.v.
  • Các tính năng C++20, C++23, C++26 hiện vẫn ở trạng thái thử nghiệm (experimental)

Các tính năng chính của C++26

  • Pack Indexing

    • Giờ đây có thể truy cập trực tiếp một phần tử cụ thể trong đối số Variadic Template bằng cú pháp pack...[N]
    • Có thể tham chiếu gọn gàng tới đối số đầu tiên mà không cần các mẹo lặp lại
  • Chỉ định thuộc tính cho Structured Bindings

    • Giờ đây có thể áp dụng riêng [[attribute]] cho từng biến trong structured binding
    • Ví dụ, có thể chỉ đánh dấu một biến binding cụ thể là [[deprecated]]
  • Thêm mô tả cho hàm bị xóa

    • Cú pháp = delete("lý do") cho phép cung cấp thông điệp trong lỗi gọi tới hàm đã bị xóa
  • Variadic Friends

    • Trong lớp template, có thể khai báo nhiều kiểu là friend cùng lúc
    • Hữu ích để tăng cường kiểm soát truy cập như trong mẫu Passkey
  • constexpr Placement New

    • Có thể dùng std::allocator và placement new trong ngữ cảnh constexpr
  • Dùng structured binding trong câu lệnh điều kiện

    • Có thể khai báo structured binding trong điều kiện của if, while, switch
    • Việc đánh giá điều kiện được thực hiện thông qua biến nội bộ do trình biên dịch tạo ra
  • Cấm xóa kiểu chưa hoàn chỉnh

    • Nếu dùng delete hoặc delete[] với kiểu chưa hoàn chỉnh, ở chế độ C++26 sẽ phát sinh lỗi biên dịch
  • Cảnh báo dấu phẩy Oxford

    • Trong khai báo hàm variadic, mẫu chỉ dùng ... mà không có , ... sẽ bị cảnh báo trong C++26
  • Loại bỏ so sánh mảng

    • Mã so sánh == giữa các mảng sẽ bị xử lý là lỗi
    • Trong C++20 trước đây đây là cảnh báo, nhưng nay đã được nâng thành lỗi biên dịch ở chế độ C++26
  • Chỉ thị #embed

    • Hỗ trợ #embed để chèn trực tiếp dữ liệu nhị phân vào mã nguồn

Chưa có bình luận nào.

Chưa có bình luận nào.