Saya baru-baru ini ingin menggunakan std.container.Array dan mulai membuat kelas dengan fungsi anggota pengambil yang mengembalikan nilai dari kelas Array. Saya segera menyadari bahwa saya tidak dapat memenuhi syarat const pengambil saya, karena opIndex adalah fungsi yang bisa berubah.
Saya mencoba mengubah kode sumber menjadi const-qualify Array.opIndex, dan hasilnya baik-baik saja. Namun, beberapa pengujian unit di std.algorithm tidak lulus, mengeluh bahwa nilai kembalian Array.opIndex bukanlah nilai l.
Berikut ini kode untuk Array.opIndex:
ref T opIndex(size_t i)
{
version (assert) if (!_data.refCountedStore.isInitialized) throw new RangeError();
return _data._payload[i];
}
Apakah ada sesuatu yang saya lewatkan di sini? Mengapa tidak memenuhi syarat const?