Upozornění kompilátoru C5037
'member-function': Mimořádková definice člena šablony třídy nemůže mít výchozí argumenty.
Poznámky
Výchozí argumenty nejsou povoleny u zastaralých definic členských funkcí ve třídách šablon. Kompilátor vydá upozornění úrovně 3 pod /permissive
položkou a chybu v části /permissive-
.
Toto upozornění bylo zavedeno v sadě Visual Studio 2017 verze 15.3. Kód kompilovaný bez upozornění ve verzích kompilátoru před sadou Visual Studio 2017 verze 15.3 teď může generovat C5037. Informace o tom, jak zakázat upozornění zavedená v konkrétní verzi kompilátoru nebo novější, naleznete v tématu Upozornění kompilátoru podle verze kompilátoru. Můžete ho zakázat pomocí možnosti kompilátoru /wd:5037
nebo #pragma warning(disable:5037)
.
Příklad
V předchozích verzích sady Visual Studio by následující nevytvořený kód mohl potenciálně způsobit chybové ukončení modulu runtime. Visual Studio 2017 verze 15.3 generuje upozornění C5037:
// 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
{
// ...
}
Pokud chcete chybu opravit, odeberte = false
výchozí argument.