5,17 / 3
Nếu toán hạng thứ hai và thứ ba có các loại khác nhau và có loại lớp (có thể đủ điều kiện cv), một nỗ lực được thực hiện để chuyển đổi từng toán hạng đó sang loại toán hạng khác. Quá trình xác định liệu một biểu thức toán hạng E1 có thể được chuyển đổi để phù hợp với biểu thức toán hạng E2 của loại T2 được xác định như sau:
- Nếu E2 là một giá trị: E1 có thể được chuyển đổi để khớp với E2 nếu E1 có thể được chuyển đổi hoàn toàn (mệnh đề 4) sang tham chiếu kiểu Kiểu thành T2, theo các ràng buộc mà trong chuyển đổi, tham chiếu phải liên kết trực tiếp (8.5.3 ) đến E1.
- Nếu E2 là một giá trị hoặc nếu chuyển đổi ở trên không thể được thực hiện:
- nếu E1 và E2 có loại lớp và các loại lớp bên dưới giống nhau hoặc một loại là lớp cơ sở của loại khác: E1 có thể được chuyển đổi để khớp với E2 nếu lớp của T2 cùng loại với hoặc lớp cơ sở của , lớp của T1 và chất lượng cv của T2 là cùng loại cv, hoặc bằng cấp cv lớn hơn so với chất lượng cv của T1. Nếu chuyển đổi được áp dụng, E1 được thay đổi thành giá trị loại T2 vẫn tham chiếu đến đối tượng lớp nguồn ban đầu (hoặc tiểu dự án thích hợp của chúng). [ Lưu ý: đó là, không có bản sao được thực hiện. - lưu ý cuối ] bằng cách sao chép khởi tạo tạm thời loại T2 từ E1 và sử dụng tạm thời đó làm toán hạng đã chuyển đổi.
Mặt khác (ví dụ, nếu E1
hoặc E2 có loại không phải là lớp hoặc nếu cả hai đều có loại lớp nhưng các lớp bên dưới không giống nhau hoặc một lớp cơ sở của loại khác): E1 có thể được chuyển đổi để khớp với E2 nếu có thể là E1 hoàn toàn chuyển đổi thành loại mà biểu thức E2 sẽ có nếu E2 được chuyển đổi thành giá trị (hoặc loại có, nếu E2 là giá trị).
Sử dụng quy trình này, nó được xác định liệu toán hạng thứ hai có thể được chuyển đổi để phù hợp với toán hạng thứ ba hay không và liệu toán hạng thứ ba có thể được chuyển đổi để phù hợp với toán hạng thứ hai hay không. Nếu cả hai có thể được chuyển đổi, hoặc một có thể được chuyển đổi nhưng chuyển đổi không rõ ràng, chương trình không được định dạng. Nếu không thể chuyển đổi, các toán hạng được giữ nguyên và kiểm tra thêm được thực hiện như mô tả dưới đây. Nếu chính xác một chuyển đổi là có thể, chuyển đổi đó được áp dụng cho toán hạng đã chọn và toán hạng được chuyển đổi được sử dụng thay cho toán hạng gốc cho phần còn lại của phần này.
5,17 / 5
Mặt khác, kết quả là một giá trị. Nếu các toán hạng thứ hai và thứ ba không có cùng loại và có loại lớp (có thể đủ điều kiện cv), độ phân giải quá tải được sử dụng để xác định các chuyển đổi (nếu có) được áp dụng cho toán hạng (13.3.1.2, 13.6) . Nếu độ phân giải quá tải không thành công, chương trình không được định dạng. Mặt khác, các chuyển đổi được xác định như vậy được áp dụng và các toán hạng được chuyển đổi được sử dụng thay cho các toán hạng ban đầu cho phần còn lại của phần này.