Tidak Boleh Menggunakan Parameter Fungsi bagi Fungsi constexpr dalam Ungkapan Malar
Coretan kod yang disediakan menunjukkan fungsi constexpr make_const dan fungsi t1 yang cuba menggunakan make_const dengan ungkapan tidak tetap. Ini menimbulkan ralat kerana i dalam t1 bukan ungkapan malar.
Fungsi constexpr, apabila diberikan hujah malar, boleh dinilai pada masa penyusunan. Walau bagaimanapun, jika parameter bukan constexpr dihantar kepada fungsi constexpr, ia tidak menjadikan parameter itu sebagai ungkapan malar.
Dalam kod di bawah, t1 ialah fungsi constexpr, tetapi make_const(i) di dalam t1 ialah bukan ungkapan malar kerana i bukan pemalar:
constexpr int t1(const int i) { return make_const(i); }
Kod yang dikemas kini menunjukkan bahawa t1 boleh diisytiharkan sebagai constexpr dan mengembalikan hasil daripada make_const:
constexpr int t1(const int i) { return make_const(i); }
Walau bagaimanapun, kod di bawah masih akan mengakibatkan ralat kerana do_something
template<int i> constexpr bool do_something(){ return i; } constexpr int t1(const int i) { return do_something<make_const(i)>(); }
Untuk meringkaskan , parameter fungsi constexpr mestilah ungkapan malar. Jika parameter bukan malar diluluskan, ia tidak menjadi ungkapan malar dalam fungsi constexpr.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Parameter Fungsi dalam Fungsi `constexpr` sebagai Ungkapan Malar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!