Change the metaprogramming library so that errors are now builtin and propagated by default (instead of having to be propagated manually which is very error-prone).
The compile-time performance hit is 9% for the biggest compile-time benchmark, and negligible for the small compile-time benchmark.
11 files changed
tree: 20078d136436b13bc58856f71a721535f07a9a1b
  1. doc/
  2. examples/
  3. extras/
  4. include/
  5. src/
  6. tests/
  7. .gitignore
  8. .kdev_include_paths
  9. .travis.yml
  10. CMakeLists.txt
  11. COPYING
  12. filter_gcc_error.sh
  13. find_unused_types.sh
  14. fruit.kdev4
  15. postsubmit.sh
  16. README.md
  17. run_benchs.sh
  18. test_coverage.sh
  19. travis_ci_before_install_linux.sh
  20. travis_ci_before_install_osx.sh
  21. travis_ci_install_linux.sh
  22. 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.