sizeof(complete_type)が実際のsizeofを返し、sizeof(incomplete_type)がちょうど0になるような動作を実現したい
タイプごとの記述構造を持つIPC(プロセス間)通信の拡張実行時タイプ情報を提供するためにこれが必要です。
struct my_type_info
{
bool is_pointer;
size_t size; //for double* will be 4 on i386. that is sizeof(double*)
size_t base_size; //for double* will be 8. that is sizeof(double)
};
私のシステムにクラスMyOnlyDeclaredClassのようなものが入ると、問題が発生します。サイズがわからないという理由で、コンパイルエラーが発生しました。
boost type_traits http://www.boost.org/doc/libs/1_48_0/libs/type_traits/doc/html/index.htmlは、多くのコンパイル時クラスを提案していますが、「is_incomplete」はありません。
興味深いコンパイラは、VS2008、VS2010、clang 3、gcc-4.6、gcc-4.7です。