Aracılığıyla paylaş


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++20oluş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++20da 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;
}