Поделиться через


Предупреждение компилятора (уровень 3) C4686

"user-defined type": возможное изменение поведения, изменение формата вызова для возвращаемого значения UDT

Специализация шаблона класса не определена перед использованием в типе возвращаемого значения. Чтобы устранить ошибку C4686, выполните инициализацию экземпляра любого класса. Также можно объявить экземпляр или выполнить обращение к члену (C<int>::"член").

Это предупреждение отображается в результате выполнения действий по обеспечению совместимости компилятора Visual C++ .NET 2003 со стандартом ISO C++.

Данное предупреждение по умолчанию отключено. Дополнительные сведения см. в разделе Compiler Warnings That Are Off by Default.

Попробуйте вместо этого использовать следующий код:

// C4686.cpp
// compile with: /W3
#pragma warning (default : 4686)
template <class T>
class C;

template <class T>
C<T> f(T);

template <class T>
class C {};

int main() {
   f(1);   // C4686
}

template <class T>
C<T> f(T) {
   return C<int>();
}