Sorry if the title doesn't make any sense, let me explain. So, I
do have the following code that does not compile:
```d
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:
```d
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?