A C++14/C++17 library for compile-time dependency injection, with perfect forwarding and explicit error handling