Tôi đang đọc qua "Thư viện chuẩn C++ của Nicolai M. Josuttis" và đã đạt đến phần trên std::pair
. Tác giả lưu ý rằng:Tại sao tiêu chuẩn lớp std :: pair thay đổi để không cho phép các loại chỉ với một hàm tạo bản sao không cố định trong C++ 11?
Vì C++ 11,
pair<>
sử dụng loại chỉ có một trình tạo bản sao không liên tục sẽ không còn biên dịch.
Sau đó, ông tiếp tục cung cấp cho các ví dụ sau:
class A
{
public:
...
A(A&); // copy constructor with nonconstant reference
...
};
std::pair<A, int> p; // Error since C++11
Tuy nhiên, tôi quan tâm đến lý do rằng ủy ban tiêu chuẩn quyết định làm việc sửa đổi này theo tiêu chuẩn thư viện tiêu chuẩn? Tôi đã cố gắng để google lý do, nhưng đã không thành công trong việc tìm kiếm bất cứ điều gì thích hợp.
Tôi sẽ phải đoán rằng luôn luôn có nghĩa là sử dụng const để hứa với người dùng để bảo toàn nội dung của cặp và C++ 11 có thể phù hợp với tiêu chuẩn thực tế. –