Revert to the previous behavior of reporting errors early (as before the last commit), but maintaining the conciseness of instantiation traces.
In fact, now the instantiation trace is slightly more concise because only the bindings before the one that caused the issue are included.
This comes with a slight compile-time performance penalty (+8% with 320 bindings in GCC).
3 files changed
tree: 6862fafe0de1c88fca32deb9ccafa48cbd90fabd
  1. configuration/
  2. doc/
  3. examples/
  4. extras/
  5. include/
  6. src/
  7. tests/
  8. .gitignore
  9. .kdev_include_paths
  10. .travis.yml
  11. CMakeLists.txt
  12. COPYING
  13. filter_gcc_error.sh
  14. find_unused_types.sh
  15. fruit.kdev4
  16. postsubmit.sh
  17. README.md
  18. run_benchs.sh
  19. test_coverage.sh
  20. travis_ci_before_install_linux.sh
  21. travis_ci_before_install_osx.sh
  22. travis_ci_install_linux.sh
  23. travis_ci_install_osx.sh
README.md

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 Fruit website for more information, including installation instructions, tutorials and reference documentation.