GRETA网上下载的源码在VS2003下编译没有一点问题,但是在2005上会有小问题。
出错情况如下:
错误 2 error C2923: 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::aligned_sizeof' : 'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>::stack_node::header' is not a valid template type argument for parameter 'T' d:/backup/我的文档/visual studio 2005/projects/greta/greta/restack.h 355
出错的代码如下
union
{
stack_node m_node;
byte_t m_buf[ aligned_sizeof<stack_node::header>::no_rtti + StaticBlockSizeT ];
} m_first_node;
说明:stack_node::header结构体是一个非法的模板参数类。
修改方法:把header去掉,用stack_node来做为模板参数类。
union
{
stack_node m_node;
byte_t m_buf[ aligned_sizeof<stack_node>::no_rtti + StaticBlockSizeT ];
} m_first_node;
此时编译成功!