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

Linda Hamilton
Lepaskan: 2024-11-03 05:38:30
asal
338 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!

sumber:php.cn
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