Tôi đã nghe một chút về vấn đề tham chiếu đến tham chiếu và độ phân giải this. Tôi không giỏi lắm với thuật ngữ C++ Committee, nhưng tôi hiểu chú thích "Moved to DR" trong liên kết có nghĩa rằng đây là giải thích hiện tại mà các trình biên dịch tuân thủ tiêu chuẩn phải tuân thủ.C++ - instantiation mẫu với loại tài liệu tham khảo
Tôi có mẫu này mã mà tôi không thể hiểu:
template <typename T>
struct C {
void f(T&) { }
void f(const T&) { }
};
int main() {
C<int> x; // OK
C<int&> y; // compile error: f cannot be overloaded
C<const int&> z; // compile error: f cannot be overloaded
}
Tôi hiểu những lỗi trong C<const int&>
trường hợp: sử dụng điều khiển từ DR # 106 chúng tôi nhận được hai phương pháp với chữ ký cùng f (const int &). Những gì tôi không nhận được là trường hợp C<int&>
: không nên tạo chính xác mã giống như C<int>
(ít nhất theo độ phân giải của Stroustrup)?
Bạn đang sử dụng trình biên dịch nào? –
vs2010 tạo ra cùng một lỗi (trong khi vs2008 báo cáo một lỗi bất hợp pháp ref-to-ref) –
điều này có một cái gì đó để làm với thực tế là động/tĩnh đúc không được phép với tham chiếu đến các loại."'doubl & d = dynamic_cast (someintvariable)'" dẫn đến 'static_cast': không thể chuyển đổi từ 'int' thành 'double &' trong MSVC –