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


Ошибка компилятора C3860

Список аргументов типа типа type должен содержать параметры списка в порядке, используемом в списке параметров типа.

Список аргументов универсального или шаблона был недоформлен.

Следующий пример приводит к возникновению ошибки C3860:

// C3860.cpp
// compile with: /LD
template <class T1, class T2>
struct A {
   void f();
};

template <class T2, class T1>
void A<T1, T2>::f() {}   // C3860

Возможное решение

// C3860b.cpp
// compile with: /c
template <class T1, class T2>
struct A {
   void f();
};

template <class T2, class T1>
void A<T2, T1>::f() {}

C3860 также может возникать при использовании универсальных шаблонов:

// C3860c.cpp
// compile with: /clr
generic<class T,class U>
ref struct GC {
   void f();
};

generic<class T, class U>
void GC<T,T>::f() {}   // C3860

Возможное решение

// C3860d.cpp
// compile with: /clr /c
generic<class T,class U>
ref struct GC {
   void f();
};

generic<class T, class U>
void GC<T,U>::f() {}