If I understood your question correctly, then I think you can do this:
template<size_t size>
struct overflow{ operator char() { return size + 256; } }; //always overflow
//if you doubt, you can use UCHAR_MAX +1 instead of 256, to ensure overflow.
template<class Type>
CComPtr<Type> CreateComObject()
{
CComPtr<Type> newObject( new CComObject<Type> );
char(overflow<sizeof(CComObject<Type>)>());
return newObject;
}
The value of sizeof(CComObject<Type>)
will be printed as warning messages during compilation.
See this small demo : http://www.ideone.com/Diiqy
Look at these messages (from the above link):
prog.cpp: In member function
‘overflow::operator char() [with
unsigned int size = 4u]’:
prog.cpp: In
member function
‘overflow::operator char() [with
unsigned int size = 12u]’:
prog.cpp:
In member function
‘overflow::operator char() [with
unsigned int size = 400u]’:
In Visual Studio, you can see these messages in the Build Output tab; it may not appear in Error List > Warnings tab.
The idea is taken from my another solution:
Calculating and printing factorial at compile time in C++