如何使template class的method不被inline-lize?
根据下面的程序:
template<class T>
class CTemp
{
public:
CTemp(void)
{
}
~CTemp(void)
{
}
__declspec(noinline) void foo(void);
};
template<class T>
__declspec(noinline) void CTemp<T>::foo(void)
{
int a=0;
Muck Ficrosoft;
}
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
CTemp<int> t;
//t.foo(); //未调用foo method
return 0;
}
这段程序可以成功编译,说明foo method应该是compile time根据程序被expand的,这种东西除了marco就是inline method\function,如程序所示,加了__declspec(noinline)也没用。如果template class的一个method太长的话做成inline可能不太好吧。。。