Ошибка компилятора C2783
Объявление: не удалось вывести аргумент шаблона для идентификатора
Компилятор не может определить аргумент шаблона. Аргументы по умолчанию нельзя использовать для определения аргумента шаблона.
Следующий пример приводит к возникновению ошибки C2783:
// C2783.cpp
template<typename T1, typename T2>
T1 f(T2) {
return 248;
}
int main() {
f(1); // C2783
// try the following line instead
int i = f<int>(1);
}
C2783 также может возникать при использовании универсальных шаблонов:
// C2783b.cpp
// compile with: /clr
using namespace System;
generic<typename T1, typename T2>
T1 gf(T2) {
T1 t1 = safe_cast<T1>( Activator::CreateInstance(T1::typeid));
return t1;
}
ref class MyClass{};
int main() {
int i;
i = gf(9); // C2783
// OK
i = gf<int>(9);
}