Dependency injection framework for C++ with compile-time wiring
Dependency injection framework for C++
$ brew install fruit && clang++ -std=c++11 -I$(brew --prefix fruit)/include your_code.cpp$ #include <fruit/fruit.h>
fruit::Component<MyService> getComponent() { return fruit::createComponent(); }$ fruit::Component<fruit::Required<Logger>> getComponent() {
return fruit::createComponent()
.bind<Logger, ConsoleLogger>();
}$ class UserService {
public:
INJECT(UserService(Database* db, Logger* log)) : db(db), log(log) {}
};$ fruit::Injector<MyComponent> injector = fruit::createInjector<MyComponent>();
auto service = injector.get<MyService*>();