Derleyici uyarısı (düzey 1) C5055
'operator-name' işleci: sabit listeleri ve kayan nokta türleri arasında kullanım dışı bırakıldı
Açıklamalar
C++20 işlenenlerde normal aritmetik dönüştürmeleri kullanım dışı bırakmıştır. Burada işlenenlerden biri sabit listesi türünde, diğeri kayan nokta türündedir. Daha fazla bilgi için bkz. C++ Standart teklif P1120R0.
Visual Studio 2019 sürüm 16.2 ve sonraki sürümlerinde, numaralandırma türleri ile kayan nokta türleri arasında örtük bir dönüştürme, derleyici seçeneği etkinleştirildiğinde /std:c++latest
düzey 1 uyarısı oluşturur. Visual Studio 2019 sürüm 16.11 ve sonraki sürümlerinde altında da bir uyarı /std:c++20
oluşturur.
Örnek
Visual Studio 2019 sürüm 16.2 ve sonraki sürümlerinde, bir sabit listesi ile kayan nokta türü arasındaki ikili işlem, derleyici seçeneği etkinleştirildiğinde /std:c++latest
düzey 1 uyarısı üretir. Visual Studio 2019 sürüm 16.11 ve sonraki sürümlerinde, altında /std:c++20
da bir uyarı oluşturur:
// 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
}
Uyarıyı önlemek için ikinci işleneni dönüştürmek için kullanın static_cast
:
// 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;
}