Compiler Error C3738
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C3738.
calling_convention': the calling convention of the explicit instantiation must match that of the template being instantiated
It is recommended that you do not specify a calling convention on an explicit instantiation. If you must, though, the calling conventions must match.
The following sample generates C3738.
// C3738.cpp
// compile with: /clr
// processor: x86
#include <stdio.h>
template< class T >
void f ( T arg ) { // by default calling convention is __cdecl
printf ( "f: %s\n", __FUNCSIG__ );
}
template
void __stdcall f< int > ( int arg ); // C3738
// try the following line instead
// void f< int > ( int arg );
int main () {
f(1);
f< int > ( 1 );
}
Show: