Sorry if the title doesn't make any sense, let me explain. So, I do have the following code that does not compile:
import core.sys.posix.pthread; /* The library */
struct Thread {
private:
pthread_t thread_id;
public:
this(void* function(void*) func, void* arg = null, scope const(pthread_attr_t*) attr = null) {
pthread_create(&this.thread_id, attr, func, arg);
}
@property:
pthread_t id() { return this.thread_id; }
}
Yes, I'm trying to "encapsulate" the Pthread (POSIX threads) API. Normally, the function pointer that is passed to "pthread_create" must be "extern(C)" and this is the complaining that the compile does. So, I'm thinking to replace the constructor to this:
this(extern(C) void* function(void*) func, void* arg = null,
scope const(pthread_attr_t*) attr = null)
{ pthread_create(&this.thread_id, attr, func, arg); }
I just added "extern(C)" before the type. This is how it looks in the error message so it must work right? Well... it doesn't. And here I am wondering why. Any ideas?