Rumah > pembangunan bahagian belakang > C++ > Apakah Kesan Tanda Kurung dalam `decltype((...))`?

Apakah Kesan Tanda Kurung dalam `decltype((...))`?

Linda Hamilton
Lepaskan: 2024-11-03 05:38:30
asal
418 orang telah melayarinya

 What's the Impact of Parentheses in `decltype((...))`?

Apakah Maksud Tanda Kurung Berganda dalam decltype((...))?

Standard C mentakrifkan kelakuan decltype(( ...)) sintaks dalam bahagian 7.6.1.2/4 FCD. Sintaks ini membolehkan pengaturcara menyimpulkan jenis ungkapan, seperti yang ditunjukkan dalam contoh berikut:

<code class="cpp">const int&&& foo();
int i;
struct A { double x; };
const A* a = new A();
decltype(foo()) x1 = i;     // type is const int&&&
decltype(i) x2;             // type is int
decltype(a->x) x3;          // type is double
decltype((a->x)) x4 = x3;   // type is const double&</code>
Salin selepas log masuk

Kehadiran tanda kurung di sekeliling ungkapan dalam decltype((a->x)) membuat perbezaan yang ketara dalam jenis yang disimpulkan. Tanpa kurungan, jenisnya hanya dua kali ganda, menunjukkan jenis pulangan akses ahli (a->x).

Walau bagaimanapun, dengan kurungan, ungkapan itu menjadi lnilai. Mengikut piawai, jika e ialah nilai l, decltype(e) ialah T&, dengan T ialah jenis e. Dalam kes ini, T adalah dua kali ganda, dan jenis yang disimpulkan adalah const double&.

Oleh itu, kurungan dalam decltype((a->x)) memaksa potongan untuk menganggap ungkapan sebagai nilai l, menghasilkan dalam jenis yang berbeza daripada jika tanda kurung telah ditinggalkan.

Atas ialah kandungan terperinci Apakah Kesan Tanda Kurung dalam `decltype((...))`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan