Если я правильно понял ваш вопрос, то я думаю, что вы можете сделать это:
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;
}
Значение sizeof(CComObject<Type>)
будет напечатано как предупреждающие сообщения во время компиляции.
См. Небольшую демонстрацию: http://www.ideone.com/Diiqy
Посмотрите на эти сообщения (по вышеуказанной ссылке):
prog.cpp: в функции-члене 'overflow :: operator char ()[with unsigned int size = 4u ] ':
prog.cpp: в функции-члене' overflow :: operator char () [with unsigned int * size = 12u ] ':
prog.cpp: В функции-члене 'overflow :: operator char () [с беззнаковым целым size = 400u ]':
В Visual Studio вы можете увидетьэти сообщения на вкладке Build Output ;он может не отображаться в Список ошибок> Предупреждения вкладка.
Идея взята из другого моего решения:
Расчет и печать факториала при компиляциивремя в C ++