Hmm. I tried to boil it down to the following:
int x = 0;
This does compile --> I thought I understood it. Everything works but I would expect a compiler error. --> I can not reproduce the issue I was asking about. But obviously I still do not understand it.
In my understanding both foo and bar should contain a definition. Hence they should create a compiler error when I include both of them. Obviously they do not. Any hints on this? Did I understand it wrong again or is this something else I do not know?