Possible to pass a member function to spawn?
Artur Skawina
art.08.09 at gmail.com
Tue Feb 7 15:55:27 PST 2012
On 02/08/12 00:32, Sean Kelly wrote:
> [...] the transitivity of shared can still make for some weirdness at the implementation level. For example, if I have:
>
> class Thread {
> pthread_t p;
> shared void detach() {
> pthread_detach(p);
> }
> }
>
> Building this yields:
>
> Error: function core.sys.posix.pthread.pthread_detach (_opaque_pthread_t*) is not callable using argument types (shared(_opaque_pthread_t*))
> Error: cannot implicitly convert expression (this.p) of type shared(_opaque_pthread_t*) to _opaque_pthread_t*
>
> So I either need to speculatively update a bunch of system API calls to add a 'shared' qualifier to everything I think will always be used in a shared context, or explicitly cast away shared when actually passing these variables to their associated API routines. Neither option is appealing, so again I haven't done anything regarding shared.
An overload would work, right?
class Thread {
pthread_t p;
shared void detach() {
pthread_detach(p);
}
void detach() {
pthread_detach(p);
}
}
And, yes, without a class similar to inout, this is not really a solution.
artur
More information about the Digitalmars-d
mailing list