我想实现像 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)
};
当进入我的系统时出现问题,例如 class 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