Rumah >pembangunan bahagian belakang >C++ >Mengapakah `decltype((...))` Mengembalikan Rujukan Manakala `decltype(...)` Tidak?

Mengapakah `decltype((...))` Mengembalikan Rujukan Manakala `decltype(...)` Tidak?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 04:31:301065semak imbas

 Why Does `decltype((...))` Return a Reference While `decltype(...)` Doesn't?

Memahami Kepentingan Tanda Kurung dalam decltype((...))

Penggunaan tanda kurung dua dalam decltype((... )) mempunyai kesan yang halus tetapi penting pada jenis yang disimpulkan oleh pengendali decltype, seperti yang dibuktikan dalam contoh dari C 17 Function Definition Concurrency (FCD).

Apabila digunakan pada pengecam tanpa kurungan (ungkapan id) atau ungkapan akses ahli kelas, decltype mengembalikan jenis entiti yang dirujuk. Walau bagaimanapun, apabila ungkapan ialah nilai l (pembolehubah atau ungkapan yang merujuk kepada lokasi memori), decltype memberi awalan rujukan tambahan (&) sebelum jenis entiti.

Dalam contoh FCD:

  • decltype(a->x) merujuk pemboleh ubah ahli (double x) bagi contoh kelas (*a) dan dengan itu mengembalikan jenis asas ahli: double.
  • decltype((a- >x)) membungkus ungkapan akses ahli yang sama dalam kurungan, menganggapnya sebagai lnilai. Akibatnya, decltype mengembalikan jenis lvalue, yang merupakan rujukan kepada jenis double: const double&.

Atas ialah kandungan terperinci Mengapakah `decltype((...))` Mengembalikan Rujukan Manakala `decltype(...)` Tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn