Allow concrete services to be used in ServiceHandle<T>

Modify ServiceHandle to fall back on dynamic_cast if the template argument is not an abstract interface. This is similar to the way ToolHandle works for concrete tools.

This also adds the new header Gaudi/Concepts.h to host C++20 concepts of common utility, starting from Gaudi::IsInterface.

Closes #344 (closed)

Merge request reports

Loading