Hello, I have encountered an issue when building ACE with MinGW and GCC 4.4.1. The following example can reproduce the issue: ========== main.cpp ========== class ACE_Message_Queue_NT;
template<typename T> class ACE_Message_Queue_Factory { public: static ACE_Message_Queue_NT *create_NT_message_queue (int max_threads); }; template <class T> ACE_Message_Queue_NT *ACE_Message_Queue_Factory<T>::create_NT_message_queue (int max_threads) { ACE_Message_Queue_NT *tmp = 0; tmp = new ACE_Message_Queue_NT (max_threads); return tmp; } class ACE_Message_Queue_NT { public: ACE_Message_Queue_NT (int) { } }; int main(void) { ACE_Message_Queue_Factory<int>::create_NT_message_queue(100); return 0; } This code can be accepted by Microsoft VC 7.1, but GCC reported the following error: main.cpp: In static member function 'static ACE_Message_Queue_NT* ACE_Message_Queue_Factory<T>::create_NT_message_queue(int)': main.cpp:15: error: invalid use of incomplete type 'struct ACE_Message_Queue_NT' main.cpp:1: error: forward declaration of 'struct ACE_Message_Queue_NT' Is there any description about the error above in C++ standard? Thanks. Best Regards, Lin Zhang 2009-10-24