Freigeben über


Compilerwarnung C5037

'member-function': Eine Out-of-Line-Definition eines Members einer Klassenvorlage kann keine Standardargumente haben:

Hinweise

Standardargumente sind in Out-of-Line-Definitionen von Memberfunktionen in Vorlagenklassen nicht zulässig. Der Compiler gibt eine Warnung der Ebene 3 unter /permissiveund einen Fehler unter /permissive-.

Diese Warnung wurde in Visual Studio 2017, Version 15.3, eingeführt. Code, der ohne Warnungen in Versionen des Compilers kompiliert wurde, bevor Visual Studio 2017, Version 15.3, jetzt C5037 generieren kann. Informationen zum Deaktivieren von Warnungen, die in einer bestimmten Compilerversion oder höher eingeführt wurden, finden Sie unter Compilerwarnungen nach Compilerversion. Sie können es mithilfe der /wd:5037 Compileroption oder #pragma warning(disable:5037).

Beispiel

In früheren Versionen von Visual Studio konnte der folgende falsch formatierte Code einen Absturz zur Laufzeit verursachen. In Visual Studio 2017 Version 15.3 wird die Warnung C5037 generiert:

// 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
{
    // ...
}

Entfernen Sie das Standardargument = false, um den Fehler zu beheben.