Aracılığıyla paylaş


Derleyici uyarısı C5037

'member-function': Sınıf şablonunun bir üyesinin satır dışı tanımı varsayılan bağımsız değişkenlere sahip olamaz

Açıklamalar

Şablon sınıflarındaki üye işlevlerin satır dışı tanımlarında varsayılan bağımsız değişkenlere izin verilmez. Derleyici altında bir düzey 3 uyarısı ve altında /permissive/permissive-bir hata döndürür.

Bu uyarı Visual Studio 2017 sürüm 15.3'te kullanıma sunulmuştur. Visual Studio 2017 sürüm 15.3'den önceki derleyici sürümlerinde uyarı olmadan derlenen kod artık C5037 oluşturabilir. Belirli bir derleyici sürümünde veya sonraki sürümlerinde sunulan uyarıları devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre derleyici uyarıları. Derleyici seçeneğini veya #pragma warning(disable:5037)kullanarak /wd:5037 devre dışı bırakabilirsiniz.

Örnek

Visual Studio'nun önceki sürümlerinde aşağıdaki kötü biçimlendirilmiş kod çalışma zamanı kilitlenmesine neden olabilir. Visual Studio 2017 sürüm 15.3 uyarı C5037 üretir:

// C5037.cpp
// compile using: cl /c /permissive- C5037.cpp
template <typename T>
struct A {
    T f(T t, bool b = false);
};

template <typename T>
T A<T>::f(T t, bool b = false) // C5037: 'A<T>::f': an out-of-line definition of a member of a class template cannot have default arguments
{
    // ...
}

Hatayı düzeltmek için varsayılan bağımsız değişkeni kaldırın = false .