Khi tạo các biến cục bộ, sử dụng có đúng (const) auto&hay autokhông?
ví dụ:
SomeClass object;
const auto result = object.SomeMethod();
hoặc là const auto& result = object.SomeMethod();
Trong đó SomeMethod () trả về một giá trị không phải nguyên thủy - có thể là một kiểu khác do người dùng xác định. Sự hiểu biết của tôi const auto& resultlà đúng vì kết quả trả về bởi SomeMethod () sẽ gọi hàm tạo bản sao cho kiểu được trả về. Xin vui lòng sửa cho tôi nếu tôi sai.
Còn đối với các loại nguyên thủy thì sao? Tôi cho const auto sum = 1 + 2;là đúng.
Điều này cũng áp dụng cho phạm vi dựa trên vòng lặp?
for(const auto& object : objects)
autohoạt động (ngoại trừ trường hợp đặc biệt củainitializer_lists, là không được suy luận trong ngữ cảnh mẫu), sau đóautonhập suy luận.