TLDR; Mark the mitk::CoreServices class template with MITK_LOCAL
When using Clang, we do not use hidden visibility for symbols in shared objects (see the comment in mitkFunctionCreateModule.cmake - there are problems with merging RTTI symbols from templates declared in external libraries and not explicitly marked with "default" visibility).
Hence, all symbols have default visibility "by default" and may be resolved by the dynamic linker. In the case of the mitk::CoreServices class template in combination with default method arguments depending on local method definitions (context = us::GetModuleContext()) the linker may resolve template definitions from other shared objects and hence use the "wrong" GetModuleContext() definition. Explicitly marking the template with MITK_LOCAL avoids the wrong resolution path.