Tôi bỏ về vấn đề này ...dynamic_cast nhầm lẫn
$ 5.2.7/2- "Nếu T là một kiểu con trỏ, v sẽ là một rvalue của một con trỏ đến hoàn chỉnh kiểu lớp, và kết quả là giá trị của loại T. Nếu T là loại tham chiếu , v sẽ là một giá trị của loại lớp hoàn chỉnh và kết quả là là một loại giá trị của loại được T. "
Theo như trên, mã sau phải được định dạng đúng.
struct A{};
struct B : A{};
int main(){
B b;
A a, &ar1 = b;
B& rb1 = dynamic_cast<B&>(ar1); // Does not $5.2.7/2 apply here?
B& rb2 = dynamic_cast<B&>(a); // and also here?
}
Nhưng không phải. Tất cả các trình biên dịch phàn nàn về các toán hạng để dynamic_cast không phải là đa hình phù hợp với
$ 5.2.7/6- Nếu không, v sẽ là một con trỏ hoặc một vế trái của một kiểu đa hình (10,3).
Vì vậy, câu hỏi của tôi là $ 5.2.7/2 có nghĩa là gì? Tại sao $ 5.2.7/6 đá ở đây?
là có bất kỳ trường hợp nào khác mà 'nếu không' trong tiêu chuẩn được sử dụng trong một * khả năng * không rõ ràng cách – Chubsdad
@ Chubsdad: Tôi mong đợi như vậy. –
sự khác biệt b/w 'sẽ' và 'sẽ' như được sử dụng trong tiêu chuẩn là gì? – Chubsdad