ช่วงไร้เดียงสาที่ใช้สำหรับลูปไม่ทำงาน
ต่อไปนี้ไม่ได้รวบรวม: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } ลองใช้กับ godbolt ข้อผิดพลาดของคอมไพเลอร์คือ: error: assignment of read-only reference 's' ตอนนี้ในกรณีของฉันจริงรายการทำจากตัวแปรสมาชิกในชั้นเรียน ทีนี้มันไม่ได้ผลเพราะนิพจน์กลายเป็นinitializer_list<int>สิ่งที่คัดลอก a, b, c และ d - ดังนั้นจึงไม่อนุญาตให้ทำการดัดแปลง คำถามของฉันคือสองเท่า: มีแรงจูงใจเบื้องหลังที่ไม่ยอมให้เขียนช่วงสำหรับลูปด้วยวิธีนี้หรือไม่? เช่น. …