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

Reply via email to