如果我正确理解了您的问题,那么我认为您可以这样做:
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() [with unsigned int size = 400u ]'中:
在 Visual Studio 中,您可以在Build Output选项卡中看到这些消息;它可能不会出现在错误列表 > 警告选项卡中。
这个想法来自我的另一个解决方案:
在 C++ 编译时计算和打印阶乘