Dự thảo tiêu chuẩn C ++ 17 N4659
Để tham khảo tiêu chuẩn chéo nhanh, hãy xem các phần "Khai báo ngầm" của các mục cppreference sau:
Các thông tin tương tự tất nhiên có thể được lấy từ tiêu chuẩn. Ví dụ : dự thảo tiêu chuẩn C ++ 17 N4659 :
15.8.1 "Sao chép / di chuyển các hàm tạo" nói cho trình tạo bản sao:
6 Nếu định nghĩa lớp không khai báo rõ ràng một hàm tạo sao chép, thì một định nghĩa không rõ ràng được khai báo ngầm. Nếu định nghĩa lớp khai báo hàm tạo di chuyển hoặc toán tử gán di chuyển, hàm tạo sao chép được khai báo ngầm định nghĩa là bị xóa; mặt khác, nó được định nghĩa là mặc định (11.4). Trường hợp thứ hai không được dùng nữa nếu lớp có toán tử gán sao chép do người dùng khai báo hoặc hàm hủy do người dùng khai báo.
và đối với nhà xây dựng di chuyển:
8 Nếu định nghĩa của lớp X không khai báo rõ ràng một hàm tạo di chuyển, thì một định nghĩa không rõ ràng sẽ được khai báo ngầm định là mặc định khi và chỉ khi
(8.1) - X không có hàm tạo sao chép do người dùng khai báo,
(8.2) - X không có toán tử gán sao chép do người dùng khai báo,
(8.3) - X không có toán tử gán di chuyển do người dùng khai báo và
(8.4) - X không có hàm hủy do người dùng khai báo.
15.8.2 "Sao chép / di chuyển toán tử gán" nói cho gán sao chép:
2 Nếu định nghĩa lớp không khai báo rõ ràng một toán tử gán sao chép, thì một định nghĩa được khai báo ngầm. Nếu định nghĩa lớp khai báo một hàm tạo di chuyển hoặc toán tử gán chuyển động, toán tử gán gán sao chép được khai báo ngầm định nghĩa là bị xóa; mặt khác, nó được định nghĩa là mặc định (11.4). Trường hợp thứ hai không được dùng nữa nếu lớp có hàm tạo sao chép do người dùng khai báo hoặc hàm hủy do người dùng khai báo.
và cho chuyển nhượng di chuyển:
4 Nếu định nghĩa của lớp X không khai báo rõ ràng một toán tử gán di chuyển, thì một định nghĩa sẽ được khai báo ngầm định là mặc định khi và chỉ khi
- (4.1) - X không có hàm tạo sao chép do người dùng khai báo,
- (4.2) - X không có hàm tạo di chuyển do người dùng khai báo,
- (4.3) - X không có toán tử gán sao chép do người dùng khai báo và
- (4.4) - X không có hàm hủy do người dùng khai báo.
15.4 "Kẻ hủy diệt" nói rằng nó dành cho kẻ hủy diệt:
4 Nếu một lớp không có hàm hủy được khai báo bởi người dùng, thì hàm hủy được mặc định khai báo là mặc định (11.4). Một hàm hủy được khai báo ngầm là một thành viên công khai nội tuyến của lớp.