In a class I defined an event attribute as follows:

public void delegate( shared(SocketListener) sender ) eventWhenStarted;

---

An instance of SocketListener is created.

auto listener = new shared SocketListener();

---

I defined a shared method that will be called when the event occurs.

public void listener_whenStarted( shared(SocketListener) sender ) shared{}

---

I set the event attribute of listener to defined method:

listener.eventWhenStarted = &listener_whenStarted;

----

Here is the error message:

main.d(21): Error: cannot implicitly convert expression (&this.listener_whenStarted) of type void delegate(shared(SocketListener) sender) shared to shared(void delegate(shared(SocketListener)))


If we look at types separately as follows:

.......void delegate(shared(SocketListener) sender) shared
shared(void delegate(shared(SocketListener)))


Isn't the first type same as the second one?


(1.5 years later, I still hate the `shared` keyword. It is nothing but confusion and extra coding for many programmers.)

Reply via email to