The error makes perfect sense. __pthread_mutex has only one
assignment operator for it (implicitly generated by the compiler):
__pthread_mutex & operator=(const __pthread_mutex&).
When you try to pass a volatile __pthread_mutex (named as
pthread_mutex_t), the compiler can't pass it to the assignment
operator - because then `volatile' would be stripped off the
reference.
I have created a small test case to demonstrate this:
typedef volatile struct A{} Av;
void foo()
{
Av x;
x = Av();
}
This test gives an error with any compiler I could tested it with:
gcc-2.96, gcc-3.2.1, gcc-4.0.0, xlC-6.0.0
Interestingly enough, it gives an error with the native
compiler too (based on teh EDG front-end).
To fix this for GCC, I will fixincludes the volatile away.
Do you know why the type itself is defined as volatile, as opposed to
I don't, but I shall ask the person who wrote the header file.
declaring only relevant variables as volatile? What system is it anyway?
System V Release 5 (UnixWare / OpenServer 6).
Kean