Share via


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 /permissivepolož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.