Force inlining of some functions/methods that will only be called once, and use std::forward to forward arguments. This reduces the code size and helps the optimizer. The lack of inlining was causing an 8x slowdown of the per-request injection time with Clang and a 2.5x increase in the executable size.
3 files changed
tree: 5c4970cb4a481eca6a05e079e217e2c07b4b8fcb
  1. configuration/
  2. examples/
  3. extras/
  4. include/
  5. src/
  6. tests/
  7. .gitignore
  8. .travis.yml
  9. appveyor.yml
  10. BUILD
  11. CMakeLists.txt
  12. CONTRIBUTING.md
  13. COPYING
  14. README.md
README.md

Build Status Build status Coverity Scan Status

Fruit is a dependency injection framework for C++, loosely inspired by the Guice framework for Java. It uses C++ metaprogramming together with some new C++11 features to detect most injection problems at compile-time. It allows to split the implementation code in "components" (aka modules) that can be assembled to form other components. From a component with no requirements it's then possible to create an injector, that provides an instance of the interfaces exposed by the component.

See the wiki for more information, including installation instructions, tutorials and reference documentation.