Đặc điểm ngôn ngữ:
Mẫu và Mã chung
Lambda
Thuộc tính
Dọn dẹp cú pháp
Điều khiển lưu lượng và hồi lưu sạch hơn
Linh tinh
Chữ nổi thập lục phân
Cấp phát bộ nhớ động cho dữ liệu được liên kết quá mức
Đảm bảo bản sao bầu cử
- Cuối cùng!
- Không phải trong tất cả các trường hợp, nhưng phân biệt cú pháp trong đó bạn "chỉ tạo ra một cái gì đó" được gọi là elision, từ "elision chính hãng".
Đã sửa lỗi thứ tự đánh giá cho (một số) biểu thức với một số sửa đổi
- Không bao gồm các đối số chức năng, nhưng đánh giá đối số chức năng xen kẽ hiện bị cấm
- Làm cho một loạt các mã bị hỏng hoạt động chủ yếu, và làm cho
.then
công việc trong tương lai.
Danh sách trực tiếp khởi tạo enums
Đảm bảo tiến trình chuyển tiếp (FPG) (cũng, FPG cho các thuật toán song song )
- Tôi nghĩ rằng điều này nói rằng "việc thực hiện có thể không trì hoãn chủ đề mãi mãi"?
u8'U', u8'T', u8'F', u8'8'
ký tự chữ (chuỗi đã tồn tại)
"không ngoại lệ" trong hệ thống loại
__has_include
- Kiểm tra nếu một tệp tiêu đề bao gồm sẽ là một lỗi
- làm cho việc di chuyển từ thử nghiệm sang tiêu chuẩn gần như liền mạch
Mảng sửa lỗi chuyển đổi con trỏ
các hàm tạo được kế thừa sửa một số trường hợp góc (xem P0136R0 để biết ví dụ về thay đổi hành vi)
tổng hợp khởi tạo với thừa kế .
std::launder
, loại pucky, vv
Thư viện bổ sung:
Loại dữ liệu
Gọi công cụ
std::invoke
- Gọi bất kỳ cuộc gọi nào (con trỏ hàm, hàm, con trỏ thành viên) với một cú pháp. Từ khái niệm INVOKE tiêu chuẩn.
std::apply
- Thực hiện một chức năng giống như một tuple và giải nén tuple vào cuộc gọi.
std::make_from_tuple
, std::apply
áp dụng cho xây dựng đối tượng
is_invocable
, is_invocable_r
,invoke_result
Luồng
Cải tiến container
Thay đổi con trỏ thông minh
Các std
cải tiến kiểu dữ liệu khác :
Linh tinh
Thư viện C ++ 17 dựa trên C11 thay vì C99
Dành std[0-9]+
cho các thư viện tiêu chuẩn trong tương lai
destroy(_at|_n)
, uninitialized_move(_n)
, uninitialized_value_construct(_n)
,uninitialized_default_construct(_n)
- mã tiện ích đã có trong hầu hết các
std
triển khai
- Các hàm toán học đặc biệt
- các nhà khoa học có thể thích chúng
std::clamp()
std::clamp( a, b, c ) == std::max( b, std::min( a, c ) )
đại khái
gcd
và lcm
std::uncaught_exceptions
- Cần thiết nếu bạn chỉ muốn ném nếu an toàn trước kẻ hủy diệt
std::as_const
std::bool_constant
- Một loạt các
_v
biến mẫu
std::void_t<T>
- Đáng ngạc nhiên hữu ích khi viết mẫu
std::owner_less<void>
- thích
std::less<void>
, nhưng để con trỏ thông minh sắp xếp dựa trên nội dung
std::chrono
đánh bóng
std::conjunction
, std::disjunction
,std::negation
Tiếp xúc
std::not_fn
- Quy tắc không ngoại lệ trong
std
- std :: is_contigupt_layout , hữu ích để băm hiệu quả
- std :: to_chars / std :: from_chars , hiệu suất cao, chuyển đổi số bất khả tri địa phương; cuối cùng là một cách để tuần tự hóa / giải tuần tự hóa thành các định dạng có thể đọc được của con người (JSON & co)
std :: default_order , kết thúc std::less
. ( phá vỡ ABI của một số trình biên dịch do xáo trộn tên, đã xóa.)
Đặc điểm
Không dùng nữa
Isocpp.org có một danh sách thay đổi độc lập kể từ C ++ 14; nó đã bị cướp phá một phần
Đương nhiên công việc TS tiếp tục song song, vì vậy có một số TS chưa hoàn toàn chín muồi sẽ phải chờ lần lặp tiếp theo. Mục tiêu cho lần lặp tiếp theo là C ++ 20 như kế hoạch trước đó, không phải C ++ 19 như một số tin đồn ngụ ý. C ++ 1O đã được tránh.
Danh sách ban đầu được lấy từ bài đăng reddit này và bài đăng reddit này , với các liên kết được thêm thông qua googling hoặc từ trang isocpp.org ở trên.
Các mục bổ sung được liệt kê từ danh sách kiểm tra tính năng SD-6 .
danh sách tính năng của clang và danh sách tính năng thư viện bên cạnh được đánh dấu. Điều này dường như không đáng tin cậy, vì nó là C ++ 1z, không phải C ++ 17.
những slide này có một số tính năng bị thiếu ở nơi khác.
Mặc dù "những gì đã bị xóa" không được hỏi, đây là một danh sách ngắn gồm một vài điều ((chủ yếu là?) Không dùng nữa) đã bị xóa trong C ++ 17 từ C ++:
Đã xóa:
Có sự điều chỉnh lại. Tôi không chắc chắn nếu những điều này có bất kỳ tác động nào đến mã, hoặc nếu chúng chỉ là phần dọn dẹp trong tiêu chuẩn:
Giấy tờ chưa được tích hợp vào ở trên:
P0505R0 ( chexo chrono)
P0418R2 (tinh chỉnh nguyên tử)
P0512R0 (điều chỉnh khấu trừ đối số mẫu)
P0490R0 (chỉnh sửa ràng buộc có cấu trúc)
P0513R0 (thay đổi thành std::hash
)
P0502R0 (ngoại lệ song song)
P0509R1 (cập nhật các hạn chế về xử lý ngoại lệ)
P0012R1 (làm cho các thông số kỹ thuật ngoại lệ là một phần của hệ thống loại)
P0510R0 (hạn chế về các biến thể)
P0504R0 (thẻ cho tùy chọn / biến thể / bất kỳ)
P0497R0 (chỉnh ptr chia sẻ)
P0508R0 (xử lý nút liên kết có cấu trúc)
P0521R0 (số lượng sử dụng con trỏ dùng chung và các thay đổi duy nhất?)
Thông số kỹ thuật thay đổi:
Tham khảo thêm: