Peringatan kompiler (level 1) C5055
operator 'operator-name': tidak digunakan lagi antara enumerasi dan jenis floating-point
Keterangan
C++20 telah menghentikan konversi aritmatika biasa pada operand, di mana satu operand berjenis enumerasi dan yang lainnya berjenis floating-point. Untuk informasi selengkapnya, lihat P1120R0 proposal Standar C++.
Di Visual Studio 2019 versi 16.2 dan yang lebih baru, konversi implisit antara jenis enumerasi dan jenis floating-point menghasilkan peringatan tingkat 1 saat /std:c++latest
opsi kompilator diaktifkan. Di Visual Studio 2019 versi 16.11 dan yang lebih baru, visual Studio 2019 juga menghasilkan peringatan di bawah /std:c++20
.
Contoh
Di Visual Studio 2019 versi 16.2 dan yang lebih baru, operasi biner antara enumerasi dan jenis floating-point menghasilkan peringatan tingkat 1 saat /std:c++latest
opsi kompilator diaktifkan. Di Visual Studio 2019 versi 16.11 dan yang lebih baru, visual Studio juga menghasilkan peringatan di bawah /std:c++20
:
// C5055.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5055.cpp
enum E1 { a };
int main() {
double i = a * 1.1; // Warning C5055: operator '*': deprecated between enumerations and floating-point types
}
Untuk menghindari peringatan, gunakan static_cast
untuk mengonversi operand kedua:
// C5055_fixed.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5055_fixed.cpp
enum E1 { a };
int main() {
double i = static_cast<int>(a) * 1.1;
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk