C++23 từ khóa thực sự

Tôi đã không tích cực tuân theo quy trình tiêu chuẩn hóa trong vài năm nên một số nội dung trên trang cppreference khiến tôi ngạc nhiên. Tuy nhiên, sau khoảng 90 phút nhấp qua nó, tôi có một số nhận xét về một số tính năng nhất định

1. "if consteval" - Tôi đoán điều này nhằm thay thế std. is_constant_evaluated, vì cái sau dễ bị lỗi
nếu constexpr (std. is_constant_evaluated()) { this_always_executes();
Điều gì đã xảy ra với quy trình khiến chúng tôi nhận được is_constant_evaluated trước?

2. "Suy ra điều này" - Điều này có thể cho phép
lớp một { int x; . int& get() { trả về x;
được viết như
lớp A { int x = 0; . auto& get(this auto& self) { return self. x;
Về cơ bản, mẫu hàm thành viên cho phép trình biên dịch viết cả hai quá tải cho bạn. Trong mã thực sự chung chung, điều này có thể giúp thu gọn bốn mẫu chức năng bị quá tải thành một

Tính năng này có thể là bước đầu tiên từ cú pháp đặc trưng liên quan đến các hàm thành viên và có thể là bước đầu tiên hướng tới cú pháp gọi hàm thống nhất. Tính đồng nhất về cú pháp sẽ cải thiện khả năng hỗ trợ lập trình chung (đủ) của C++, nhưng nó cũng sẽ giúp cải thiện các tính năng lập trình meta khủng khiếp không thể tránh khỏi đang được thêm vào ngôn ngữ, vì vậy tính năng này là một bước vững chắc đi đúng hướng

3. "out_ptr và inout_ptr" - đây là một công cụ giúp con trỏ thông minh hoạt động trơn tru với các giao diện kiểu C có chữ T** và chữ T* được trỏ tới. Điều này sẽ hữu ích, nhưng tại sao họ lại chọn inout_ptr thay vì in_out_ptr. ?

4. "move_only_function" - Nó dùng để làm gì?

Chúng tôi đã trở lại với tất cả các tin tức từ tháng 6, tháng 7 và tháng 8 năm 2022 trong thông báo chú thích C++ mới nhất của chúng tôi. Chúng tôi đã giữ im lặng trong một thời gian và mặc dù ba tháng này ít bận rộn hơn so với phần còn lại của năm đối với nhiều người, nhưng chúng vẫn chứa đầy những tin tức tuyệt vời. Vì vậy, mong đợi thông báo của ngày hôm nay sẽ dài hơn bình thường một chút

  • tin tức ngôn ngữ
  • hội nghị
  • Học tập
  • dụng cụ

C++23 đang trong tình trạng đóng băng tính năng

Trong phiên họp toàn thể ảo tháng 7, C++23 đã đạt đến mức đóng băng tính năng. Timur Doumler đã viết một báo cáo cuộc họp trên blog của chúng tôi về những thay đổi chính đã được thống nhất tại cuộc họp

Để giải quyết trường hợp sử dụng coroutines, hỗ trợ thư viện đã được thêm vào với std::generator, vì vậy bạn không cần phải viết bằng tay nữa. Để có bản in đầu ra tốt hơn, một std::print mới tích hợp với C++20 std::format đã được thêm vào. Bạn cũng có thể tìm thấy các loại dấu phẩy động mới mở rộng tùy chọn với chiều rộng và thuộc tính lưu trữ được xác định, được xác định theo ISO/IEC/IEEE 60559 và nhiều cải tiến cho phạm vi. Kiểm tra bài đăng của Timur để biết các liên kết trực tiếp đến các đề xuất để tìm hiểu chi tiết

C23 rất lớn

C cũng có một số tin tức lớn thú vị – C23 hiện đang ở dạng cuối cùng. Bài đăng trên blog này cung cấp cho bạn một cái nhìn tổng quan về nhiều thay đổi mới liên kết với các đề xuất liên quan

Các nhà phát triển C++ có thể không coi đây là “những thay đổi lớn” mà giống như “những điều hiển nhiên phải có” hơn. Tuy nhiên, đối với các nhà phát triển C, bản cập nhật là rất lớn

  • Constexpr hiện có sẵn cho các đối tượng C, với các trình biên dịch đảm bảo đối tượng này là một biểu thức không đổi
  • Mặc dù trong C ++, các chữ ghép là một thách thức, nhưng trong C, chúng hiện có thể thực hiện được và được hỗ trợ trong C23
  • Chỉ thị mới #embed đã được thêm vào để giúp bạn đưa mã nhị phân vào mã của mình
  • Yêu cầu đối với danh sách tham số biến đổi đã được nới lỏng. Không có tham số đầu tiên, không có va_start – các lệnh gọi hàm dựa trên thuần túy hiện có thể thực hiện được trong C
  • Các cải tiến cho phép liệt kê hiện cho phép các giá trị lớn hơn INT_MAX và nhỏ hơn INT_MIN
  • Hằng số nullptr đã được giới thiệu

Bi kịch của C++ và ngôn ngữ Carbon từ C++North

Vào tháng 7, phiên bản đầu tiên của C ++ North đã diễn ra tại Toronto. Hội nghị phát triển từ Nhóm người dùng Toronto C++. Vì vậy, mặc dù chỉ có 180 người tham dự tại chỗ, nhiều diễn giả đáng chú ý đã có mặt. Timur Doumler đã viết một báo cáo chuyến đi chia sẻ ấn tượng của mình về sự kiện này

Chúng tôi muốn nhấn mạnh hai bài phát biểu ở đây

  • Bài nói chuyện của Chandler Carruth về ngôn ngữ Carbon, một “ngôn ngữ kế thừa thử nghiệm của C++”, mà Google và một nhóm cộng tác viên đã bí mật làm việc trong vài năm nay. Những người tạo ngôn ngữ tại Google đã cố gắng đạt được nhiều mục tiêu thú vị như hiệu suất phù hợp với C++, khả năng tương tác với C++, quyền truy cập cấp thấp vào bit và địa chỉ, dễ học và dễ di chuyển sang. Kiểm tra cuộc nói chuyện và chi tiết ngôn ngữ trên GitHub. Bạn có nghĩ Carbon là thứ có thể xuất hiện tiếp theo cho C++ không?
  • Bài nói chuyện của Sean Parent về sự phát triển của C++. Bi kịch chính được Sean nhấn mạnh là C ++ thành công cũng gây hại cho chính nó. Các điểm được thảo luận là quy trình chuẩn hóa và xử lý hiệu suất ngôn ngữ. Câu hỏi chính là C++ sẽ phát triển hơn nữa như thế nào và liệu chúng ta có mong đợi một số thay đổi mạnh mẽ hay không.

Nội tuyến – không phải như trước đây

Martin Vobrodt đã viết một bài báo về từ khóa inline và các lĩnh vực ứng dụng mới của nó. Nó đã là một phần của ngôn ngữ trong một thời gian dài để hỗ trợ không vi phạm ODR và ​​để tăng hiệu suất thời gian chạy, đôi khi phải trả giá bằng kích thước của tệp thực thi. Tác giả lưu ý rằng mặc dù trình biên dịch có thể bỏ qua inline, nhưng bạn luôn có thể xác định một hàm dưới dạng macro và có một bộ tiền xử lý đánh giá và thay thế mã cho nó trước khi biên dịch

C++17 inline cũng giúp với các biến toàn cục được chia sẻ trên nhiều đơn vị biên dịch. Khi được xác định theo cách như vậy, một biến có thể được đưa vào nhiều tệp nguồn. Trình liên kết sẽ đảm bảo rằng cùng một biến tại cùng một vị trí bộ nhớ được truy cập hoặc sửa đổi bất kể nó xảy ra trong đơn vị biên dịch nào. Điều tương tự cũng áp dụng cho std::print2 biến thành viên của một lớp hoặc cấu trúc

Bộ cấp phát bộ nhớ và API xấu

Một bài viết mới của Jonathan Müller thảo luận về bộ cấp phát bộ nhớ và các vấn đề trong API hiện tại của họ. Trong API tốt, các chức năng yêu cầu tất cả thông tin cần thiết làm tham số đầu vào và trả về nhiều thông tin nhất có thể. Tuy nhiên, các hàm std::print3, std::print4, std::print5 và std::print6 không tuân theo nguyên tắc này. Các vấn đề thực tế với các chức năng này, như được nhấn mạnh bởi tác giả, là

  • Thiếu khả năng chỉ định căn chỉnh tùy chỉnh cho bộ nhớ đã căn chỉnh
  • Việc triển khai hiện tại dựa trên siêu dữ liệu về bộ cấp phát được lưu trữ bổ sung
  • Có thể có nhiều bộ nhớ được phân bổ hơn chúng ta thực sự cần và các chức năng như std::print7 không báo cáo kích thước thực của khối bộ nhớ được phân bổ
  • Bản sao bộ nhớ tự động trong std::print6 dựa trên lệnh gọi std::print9 đơn giản và không thể giúp gọi một hàm tạo di chuyển hoặc xử lý các con trỏ tự tham chiếu bên trong đối tượng được sao chép

Jonathan đã đề xuất một giao diện tốt hơn để giải quyết những vấn đề này. Ông cũng chia sẻ những cải tiến gần đây theo hướng này đã được đề xuất hoặc triển khai bằng ngôn ngữ. Điều này bao gồm phân bổ được căn chỉnh trong C++17, phân bổ theo kích thước và hàm std::format0 mới trong C++23 std::format1

Sử dụng loại C++23 std::format2

Marius Bancila dành riêng một bài báo cho một tính năng mới sắp có trong C++23 – std::format2. Loại này dành cho các tình huống khi bạn cần trả về dữ liệu từ một hàm, nhưng cũng như khi bạn muốn chỉ ra và giải thích lỗi mà không trả về dữ liệu
Làm thế nào bạn có thể làm điều đó ngay bây giờ, trước khi C++23 được phát hành?

  • Trả về dữ liệu thông qua một tham số được truyền bởi một tham chiếu và trả về mã trạng thái từ một hàm
  • Ném một ngoại lệ trong trường hợp chức năng không thành công
  • Sử dụng C++17 std::format4. Trong trường hợp này, kiểu trả về sẽ đồng thời cho cả dữ liệu và mã trạng thái. Cách sử dụng trong trường hợp này đòi hỏi một cú pháp khá phức tạp với std::format5
  • Một lựa chọn khác là std::format6. Trong trường hợp này, kiểu trả về có thể chứa hoặc không chứa giá trị. Tuy nhiên, không có cách nào để giải thích lỗi và chia sẻ lý do thất bại trong việc triển khai này

std::format2 là sự kết hợp của std::format4 và std::format6. Vì vậy, đó là một liên minh giữ dữ liệu hoặc thất bại. Bài đăng trên blog trình bày giải pháp cho trường hợp sử dụng tương tự thông qua std::format2

Hãy xem bài đăng của khách này từ Greg Utas tại C++ Stories. Nó dành riêng để viết trình kiểm tra mã nguồn mở với các bản sửa lỗi nhanh cho mã C++. Ý tưởng được nảy sinh từ yêu cầu làm sạch các chỉ thị #embed1 trong một dự án. Điều này có nghĩa là loại bỏ các tiêu đề không cần thiết và chỉ bao gồm những tiêu đề đang được chọn tạm thời, nhưng vô tình
Tính năng Bao gồm những gì bạn sử dụng của Google chưa sẵn sàng vào thời điểm đó, vì vậy Greg quyết định tạo công cụ của riêng mình. Sau đó, nó được mở rộng để đưa ra các khuyến nghị về khai báo chuyển tiếp và sử dụng các câu lệnh khai báo. Cuối cùng, các bản sửa lỗi nhanh đã được đưa vào công cụ, vì thật khó để tưởng tượng một trình kiểm tra hữu ích mà không có khả năng khắc phục sự cố tự động

Bài viết không đi sâu vào chi tiết triển khai. Công cụ này được xây dựng trên RSC, một khung nguồn mở dành cho các ứng dụng C++ linh hoạt và nó hỗ trợ các tính năng của ngôn ngữ C++ mà RSC sử dụng – một tập hợp con của C++11. Bạn có thể tìm hiểu cách sử dụng công cụ này từ bài viết, vì nó trình bày các lệnh CLI để sử dụng công cụ và một ví dụ thực tế

Có nhiều công cụ trong hệ sinh thái để so sánh với ngày nay. Những hạn chế của công cụ hiện tại cũng được liệt kê trong bài đăng trên blog. Bạn sử dụng (những) công cụ phân tích mã nào trong quá trình phát triển C++ hàng ngày của mình, nếu có?

Viết daemon trong C++20

Nhiều người trong chúng ta đã viết một daemon đơn giản ngồi và thực hiện một số công việc nền cho đến khi tắt máy. Một điểm thú vị ở đây là hầu hết các mã phổ biến không thể xử lý chính xác tín hiệu tiêu diệt được gửi bằng cách nhập #embed2 trên bảng điều khiển. Bài viết này nói về C++20 #embed3 và #embed4, giúp thực hiện tắt máy nhẹ nhàng. Bạn có thể tìm thấy ví dụ mã đầy đủ trong bài viết và chỉ được cung cấp cho Windows, mặc dù việc triển khai cũng có thể thực hiện được trên Linux và macOS

Đơn giản hóa mã với if constexpr và các khái niệm trong C++17/C++20

Một bài blog khác trong C++ Stories, được viết bởi Bartlomiej Filipek, dành riêng cho #embed5 và cách sử dụng các khái niệm. Nó chia sẻ một số ví dụ hữu ích trong đó cách tiếp cận #embed6 được thay đổi thành #embed5 và các khái niệm, làm cho mã dễ đọc và biểu cảm hơn nhiều
Các ví dụ được sử dụng trong bài viết là

  • Một hàm lấy hai số và so sánh chúng. Các số nổi và các số khác được xử lý khác nhau ở đây
  • Một hàm lấy một vectơ số và trả về giá trị trung bình của chúng. Ví dụ này không dựa vào C++20 #embed8, thay vào đó thể hiện cách tiếp cận #embed5
  • Một ví dụ từ cuốn sách C++ hiện đại hiệu quả của Scott Meyers với một phương thức xuất xưởng tạo ra các lớp dẫn xuất và hỗ trợ một số đối số thay đổi cho chúng
  • Một ví dụ thực tế từ triển khai thư viện chuẩn của Microsoft. Thay đổi loại bỏ việc gửi thẻ trong triển khai va_start0

Mọi ví dụ trong bài viết đều bắt đầu với việc triển khai đã biết thông qua #embed6 và sau đó nâng cấp lên #embed5. Các khái niệm được thêm vào để làm cho mã cuối cùng có ý nghĩa hơn

Bool trong C++ cho các tham số chức năng

Antoine Morrier bắt đầu một cuộc thảo luận về việc sử dụng booleans trong tham số chức năng. Thay vào đó, anh ấy đề xuất sử dụng một lớp va_start3 để đảm bảo mã có thể đọc được và các hàm được gọi chính xác. Nhiều độc giả lưu ý trong các bình luận rằng có một vấn đề lớn hơn ẩn trong văn bản. sử dụng hằng số thay vì tên tượng trưng và chuyển nhiều biến cùng loại làm tham số. Các giải pháp khả thi, các loại mạnh, Thành ngữ tham số được đặt tên và các trình khởi tạo được chỉ định được đề xuất. Giải pháp của bạn sẽ là gì?

Trong cuộc phỏng vấn này, chúng tôi đã nói chuyện với Jean-François Milants, người đóng góp chính cho dự án InfiniTime, chương trình cơ sở mã nguồn mở cho đồng hồ thông minh Pine64 PineTime. Anh ấy nói với chúng tôi về việc bắt đầu dự án và phát triển lên sáu nhà phát triển cốt lõi và hơn 100 người đóng góp từ khắp nơi trên thế giới. Chúng tôi đã thảo luận về các nền tảng khác mà phần mềm được chuyển sang, bộ vi điều khiển nRF52832 của Nordic Semiconductor mà đồng hồ thông minh PineTime dựa trên đó, nó phù hợp với trường hợp sử dụng đồng hồ thông minh như thế nào và việc bắt đầu dễ dàng như thế nào

Phần sụn hiện đang sử dụng C++ 14, với va_start4, các lớp va_start3, ngữ nghĩa di chuyển và các tính năng khác được sử dụng rộng rãi. Nó cũng được xây dựng xung quanh nhiều dự án mã nguồn mở khác như FreeRTOS. Chúng tôi đã nói về họ và về CLion, người mà Jean-François đã từng đóng góp cho dự án

Phát triển C++ từ xa với CLion

Vào tháng 7, chúng tôi đã tổ chức một hội thảo trên web dành riêng cho các thiết lập khác nhau để phát triển C++ từ xa được hỗ trợ trong CLion, IDE C++ đa nền tảng của JetBrains. Matt Ellis và Timur Doumler đã thảo luận về các tùy chọn như phát triển từ xa với Cổng và phát triển từ xa với các nguồn cục bộ, thiết lập WSL và Docker cũng như chuỗi công cụ chuyên dụng và chỉnh sửa cộng tác với Code With Me. Các loa đã nhấp nháy đèn LED Raspberry Pi bằng cách gỡ lỗi từ xa từ CLion và thậm chí đã làm điều đó một cách cộng tác (Matt nhấp nháy đèn LED ở phía Timur)

Bài đăng trên blog tiếp theo cung cấp bản ghi của hội thảo trên web, cung cấp một tập hợp các liên kết hữu ích để đọc thêm và tới tài liệu, đồng thời trình bày một số câu hỏi và câu trả lời đáng chú ý từ sự kiện. Ví dụ: bạn có thể tìm hiểu xem ứng dụng tối thiểu có kế thừa cài đặt CLion hay không hoặc cách đảm bảo quyền riêng tư cho Code With Me và Gateway

CMake 3. 24

Bản phát hành CMake mới mang lại nhiều thay đổi đáng giá. Đọc qua những điểm nổi bật chính và xem ghi chú phát hành đầy đủ nếu bạn quan tâm

  • Kiến trúc Arm64 đang trở nên phổ biến hơn trong thế giới Windows. Đối với phiên bản CMake mới, hiện đã cung cấp tệp nhị phân Windows arm64 được biên dịch sẵn
  • Với CMake 3. 24, các biến môi trường như va_start6 và va_start7 không được đặt khi bật ngôn ngữ tương ứng. Trước đó, chúng chỉ được xác định tại thời điểm định cấu hình, không phải thời gian xây dựng và không được đặt trên các lần chạy CMake tiếp theo. Thay đổi này khắc phục hành vi có khả năng khác nhau giữa lần chạy CMake đầu tiên và tiếp theo
  • Biến va_start8 đã được thêm vào để kiểm soát chẩn đoán màu do trình biên dịch tạo ra. Thay đổi này được giới thiệu bởi nhóm CLion và giúp bạn có thể vào CLion
  • CMake Presets đã được nâng cấp lên phiên bản lược đồ 5

Những thay đổi khác bao gồm các cải tiến cho trình tạo Green Hills MULTI và Visual Studio, cùng với nhiều lệnh, thuộc tính, biến mới và các cải tiến khác

Clion 2022. 2

Cuối tháng 7 ra bản CLion mới. Bản phát hành này vẫn nhằm mục đích cải thiện nhiều tính năng và tích hợp hiện có, đồng thời nâng cao trải nghiệm người dùng, hiệu suất và các khía cạnh khác. Trọng tâm đặc biệt về khả năng đọc mã là trình điều khiển cho một số tính năng mới

  • Clion 2022. 2 được Tài liệu nhanh nâng cao với các giá trị của các biểu thức được đánh giá tại thời điểm biên dịch, các giá trị va_start3 và thông tin về các hoạt động 0 và 1 cho lớp đã cho. Tài liệu nhanh cũng được bật cho các tập lệnh CMake
  • Sơ đồ đặt tên cho các cấu hình CMake được tạo tự động từ các cài đặt trước CMake đã được cập nhật
  • Đầu ra Ninja được tô màu đã được hỗ trợ trong CLion, trong khi chỉ khả dụng cho CMake v3. 24 và mới hơn. Clion 2022. 2 gói CMake v3. 23
  • Các phiên bản đi kèm của trình gỡ lỗi đã được cập nhật lên GDB v12. 1 và LDB v14. Và hỗ trợ máy chủ biểu tượng đã được giới thiệu cho Windows
  • Phân tích mã tĩnh đã được làm phong phú với kiểm tra Array index is out of bounds

Nhiều cải tiến hiệu suất cho các bộ công cụ khác nhau đã được giới thiệu trong phiên bản mới, bao gồm các bản cập nhật plugin Space và IntelliJ Rust, v.v. Nếu bạn quan tâm đến những gì nhóm CLion dự định trong v2022. 3 kiểm tra

ReSharper C++ 2022. 2

JetBrains ReSharper C++, một tiện ích mở rộng dành cho Visual Studio dành cho nhà phát triển C++, cũng đã nhận được bản cập nhật vào năm 2022. 2 bản cập nhật. Nó cải thiện chất lượng hỗ trợ C ++ và mang lại nhiều tính năng tăng năng suất hơn cho các nhà phát triển trò chơi dựa trên Unreal Engine

  • Hỗ trợ bản thiết kế trước đây chỉ khả dụng trong JetBrains Rider. Bây giờ, tích hợp đã được giới thiệu trong ReSharper C++. Ý tưởng là nó đọc Bản thiết kế và giới thiệu một loại gợi ý mới để giúp bạn thấy cách các nhà thiết kế Bản thiết kế sử dụng và mở rộng hệ thống cơ sở được triển khai trong phần C++ của trò chơi Unreal Engine
  • Bằng cách thêm bộ nhớ đệm cho các tiêu đề được biên dịch trước, chúng tôi đã cải thiện đáng kể tốc độ lập chỉ mục. Điều này đáng chú ý trên cơ sở mã Unreal Engine và bạn có thể tìm thấy các con số trong bài đăng trên blog này
  • Bản cập nhật mới đi kèm với tệp nhị phân Clang-Tidy đi kèm từ Clang 14, thêm các kiểm tra mới từ bản phát hành LLVM mới nhất

Các thay đổi khác bao gồm xử lý tốt hơn các lệnh gọi hàm tương tự như 2 và 3, hỗ trợ cho các bài kiểm tra đơn vị Spec và đánh dấu cú pháp trong chú giải công cụ lỗi

LLVM 15

Bản phát hành mới nhóm nhiều thay đổi trong LLVM, Clang, ClangFormat, Extra Clang Tools và các phần khác của hệ sinh thái LLVM theo v15. 0. 0. Bạn có thể quan tâm đến các phần khác nhau của thông báo, vì vậy hãy đảm bảo kiểm tra nó. Dưới đây là những điểm nổi bật được ghi nhận bởi nhóm của chúng tôi

  • Trình biên dịch Clang đi kèm với nhiều cải tiến để tuân thủ C++20. Chúng tôi muốn đề cập cụ thể đến việc triển khai 4, cho phép thư viện hỗ trợ cho 5. Lớp thư viện này đại diện cho một số thông tin nhất định về mã nguồn, chẳng hạn như tên tệp, số dòng và tên hàm. Nó giúp bạn tránh các macro như 6 và 7 trong mã của bạn. Bản phát hành mới bao gồm nhiều thay đổi cần thiết để hỗ trợ Mô-đun C++ 20 trong Clang, bao gồm sơ đồ xáo trộn mới, cách ly ABI cho các chức năng thành viên, đề xuất Hợp nhất Mô-đun, v.v.
  • LLVM v15. 0. 0 mang lại triển khai nhanh hơn cho phân tích đơn vị dịch chéo trong Clang. Nó giảm tốc độ xuống khoảng 2 lần so với phân tích TU đơn lẻ. Trước đây, tốc độ chậm đối với các dự án C++ có thể lên tới 10x–12x
  • Các thay đổi ClangFormat rất quan trọng cần lưu ý nếu bạn đang dựa vào các tham số đã thay đổi trong cấu hình của mình. Ví dụ: IndentRequires đã được đổi tên thành IndentRequiresClause và giá trị mặc định đã được cập nhật và BreakB BeforeConceptDeclarations hiện lấy một enum thay vì một giá trị boolean
  • Extra Clang Tools đã giới thiệu các bản cập nhật cho gợi ý inlay, chẩn đoán, đánh dấu ngữ nghĩa và hoàn thành mã. Clang-Tidy đi kèm với các bản sửa lỗi cho định dạng của các mục Checks và CheckOptions

Đăng ký cập nhật Blog

Bằng cách gửi biểu mẫu này, tôi đồng ý rằng JetBrains s. r. o. ("JetBrains") có thể sử dụng tên, địa chỉ email và dữ liệu vị trí của tôi để gửi cho tôi các bản tin, bao gồm cả thông tin liên lạc thương mại và để xử lý dữ liệu cá nhân của tôi cho mục đích này. Tôi đồng ý rằng JetBrains có thể xử lý dữ liệu nói trên bằng các dịch vụ của bên thứ ba cho mục đích này theo Chính sách quyền riêng tư của JetBrains. Tôi hiểu rằng tôi có thể rút lại sự đồng ý này bất cứ lúc nào trong hồ sơ của mình. Ngoài ra, một liên kết hủy đăng ký được bao gồm trong mỗi email

C++23 đã hoàn thiện chưa?

C++ 23, phiên bản tiếp theo theo kế hoạch của ngôn ngữ lập trình C++ do được hoàn thiện vào năm 2023 , được thiết lập để tiếp tục hỗ trợ cho .

Có gì trong C++23?

C++23 đang ở trạng thái đóng băng tính năng . print tích hợp với C++20 std. định dạng được thêm vào a new std::print that integrates with C++20 std::format is added . Bạn cũng có thể tìm thấy các loại dấu phẩy động mới mở rộng tùy chọn với chiều rộng và thuộc tính lưu trữ được xác định, được xác định theo ISO/IEC/IEEE 60559 và nhiều cải tiến cho phạm vi.

Đây có phải là từ khóa trong C++ không?

Trong lập trình C++, đây là từ khóa đề cập đến thể hiện hiện tại của lớp . Có thể có 3 cách sử dụng chính của từ khóa này trong C++. Nó có thể được sử dụng để truyền đối tượng hiện tại làm tham số cho phương thức khác. Nó có thể được sử dụng để chỉ biến thể hiện của lớp hiện tại.

C++20 có được phát hành không?

C++20 là phiên bản của tiêu chuẩn ISO/IEC 14882 dành cho ngôn ngữ lập trình C++. C++20 đã thay thế phiên bản trước của tiêu chuẩn C++, được gọi là C++17. Tiêu chuẩn đã được WG21 hoàn thiện về mặt kỹ thuật tại cuộc họp ở Praha vào tháng 2 năm 2020, được phê duyệt vào ngày 4 tháng 9 năm 2020 và được xuất bản vào tháng 12 năm 2020 .