1. fdc7990 When injecting shared_ptr<>s dependencies for an object, first inject (pointers to) all dependencies and then construct all the shared_ptr<>s at the end, before calling the constructor/provider. This helps the optimizer optimize out increments/decrements/checks of the shared_ptr<> reference count (this is useful at least for GCC 6; e.g. Clang 4 already optimized those out without this re-organization of the code). by Marco Poletti · 7 years ago
  2. f289510 Add configure-time checks on compiler and STL features, and use the results of those in macros in Fruit code, instead of checking for specific compilers and/or versions. by Marco Poletti · 9 years ago
  3. 3b95a51 Refactor a bit the metaprogramming code, plus some small optimizations. by Marco Poletti · 9 years ago
  4. 010daa6 Rewrite all metaprogramming code to use a more readable style. What was Apply<F, X, Y> before can now be written as F(X, Y). After this commit all code uses the new style and passes existing tests, but there is a ~60% compile-time performance hit that still needs to be investigated/addressed. by Marco Poletti · 9 years ago
  5. e464713 Complete support for annotated types, with tests (and fixes for bugs that slipped in the previous commit due to lack of tests). by Marco Poletti · 9 years ago
  6. 31f638a Add support for annotated types. This commit contains the implementation only, tests for the new functionality are still TODO. by Marco Poletti · 9 years ago
  7. a5289cf Shorten error messages even further by including injection_errors.h directly in all public headers. by Marco Poletti · 9 years ago
  8. 43637ba Further reduce the depth of the template instantiation trace shown when reporting errors. Now it's the bare minimum for errors detected in method calls (static_assert location, operation that reported the error, caller code) and 1 more level for errors reported during instantiation of a type. by Marco Poletti · 9 years ago
  9. a19fd1e Rewrite the error-reporting code. Now errors are always reported with O(1) lines of template instantiation traces, no matter how deep in the instantiation they were discovered. by Marco Poletti · 9 years ago
  10. 6070c7c Move fruit/impl/metaprogramming->fruit/impl/meta, and move all metaprogramming facilities into the fruit::impl::meta namespace. by Marco Poletti · 10 years ago
  11. 934689f Optimize injection of Provider<> objects. by Marco Poletti · 10 years ago
  12. 9867cef . by Marco Poletti · 10 years ago
  13. 9250dea Limit Provider to a single argument, it's easier to understand and it will allow some specific optimizations later. by Marco Poletti · 10 years ago
  14. a185d5e Some documentation improvements. by Marco Poletti · 10 years ago
  15. bd9e0b3 Change the metaprogramming code to use an mpl-like style. Greatly improves readability, but compile time increaes ~10% in the benchmark. by Marco Poletti · 10 years ago
  16. 7f35b65 Re-organize the source code. Merge component.utils.h into component_impl.h. Now using .defn files for template/inline definitions. by Marco Poletti · 10 years ago
  17. 4406e32 Simplify the public interface: move PartialComponent into component.h, inline a copy of Provider into Injector, remove unused forward declarations, move method definition out of public headers. by Marco Poletti · 10 years ago
  18. 103f650 Refactor the implementation of Component: use ConsComp and drop the ComponentImpl class. by Marco Poletti · 10 years ago
  19. 86f2d73 Improve error reporting, move all user-visible errors to injection_errors.h and remove all user-visible List<>s. by Marco Poletti · 10 years ago
  20. 845a3d4 Revert "Change the representation of compile-time lists.". There is no compile-time performance benefit with Clang, and the compile-time with GCC was ~10% worse. by Marco Poletti · 10 years ago
  21. 2ccfbbf Change the representation of compile-time lists. by Marco Poletti · 10 years ago
  22. fdbfcbe Split InjectorStorage out of ComponentStorage. by Marco Poletti · 10 years ago
  23. 97e3623 Improve compile-time error messages, and add tests for the improved messages. Also test that all public headers can be included on their own, and add missing includes. by Marco Poletti · 10 years ago
  24. a5f49d4 Split the Injector class, now Provider is a separate class. by Marco Poletti · 10 years ago