あなたの質問を正しく理解していれば、次のことができると思います。
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: In member function 'overflow::operator char() [with unsigned int size = 12u ]':
prog.cpp: メンバー関数 'overflow::operator char() [with unsigned int size = 400u ]':
Visual Studio では、 [ビルド出力] タブにこれらのメッセージが表示されます。[エラー リスト] > [警告] タブに表示されない場合があります。
アイデアは私の別の解決策から取られています:
C++ でのコンパイル時の階乗の計算と出力