{"id":13418541,"url":"https://github.com/boost-ext/di","last_synced_at":"2025-10-24T22:15:27.907Z","repository":{"id":2292634,"uuid":"3250728","full_name":"boost-ext/di","owner":"boost-ext","description":"C++14 Dependency Injection Library","archived":false,"fork":false,"pushed_at":"2024-07-29T09:00:53.000Z","size":75027,"stargazers_count":1163,"open_issues_count":80,"forks_count":140,"subscribers_count":68,"default_branch":"cpp14","last_synced_at":"2024-10-29T15:38:19.910Z","etag":null,"topics":["dependency-injection","design-patterns","metaprogramming"],"latest_commit_sha":null,"homepage":"https://boost-ext.github.io/di","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boost-ext.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-01-23T21:42:55.000Z","updated_at":"2024-10-29T14:29:09.000Z","dependencies_parsed_at":"2023-01-13T12:45:25.887Z","dependency_job_id":"e9627bac-94e6-449f-8f7c-6a9fccfff0b0","html_url":"https://github.com/boost-ext/di","commit_stats":{"total_commits":4963,"total_committers":26,"mean_commits":190.8846153846154,"dds":"0.13237960910739477","last_synced_commit":"c82adc33822aa70818d37f08f600f207b08d2c36"},"previous_names":["boost-experimental/di"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boost-ext%2Fdi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boost-ext%2Fdi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boost-ext%2Fdi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boost-ext%2Fdi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boost-ext","download_url":"https://codeload.github.com/boost-ext/di/tar.gz/refs/heads/cpp14","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767232,"owners_count":20992538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependency-injection","design-patterns","metaprogramming"],"created_at":"2024-07-30T22:01:03.520Z","updated_at":"2025-10-24T22:15:27.812Z","avatar_url":"https://github.com/boost-ext.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","C++"],"sub_categories":[],"readme":"\u003ca href=\"http://www.boost.org/LICENSE_1_0.txt\" target=\"_blank\"\u003e![Boost Licence](http://img.shields.io/badge/license-boost-blue.svg)\u003c/a\u003e\n\u003ca href=\"https://github.com/boost-ext/di/releases\" target=\"_blank\"\u003e![Version](https://img.shields.io/github/v/release/boost-ext/di)\u003c/a\u003e\n\u003ca href=\"https://github.com/boost-ext/di/actions/workflows/build.yml\" target=\"_blank\"\u003e![Linux](https://github.com/boost-ext/di/actions/workflows/build.yml/badge.svg)\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/boost-ext/di\" target=\"_blank\"\u003e![Coveralls](https://codecov.io/gh/boost-ext/di/branch/cpp14/graph/badge.svg)\u003c/a\u003e\n\u003ca href=\"https://godbolt.org/z/5qTKhf\"\u003e![Try it online](https://img.shields.io/badge/try%20it-online-blue.svg)\u003c/a\u003e\n\n---------------------------------------\n\n# boost-ext.di\n\nYour C++14 **one header only** Dependency Injection library with no dependencies\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=yVogS4NbL6U\"\u003e\u003cimg src=\"doc/images/di_concept.png\" alt=\"Dependency Injection\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003e https://www.youtube.com/watch?v=yVogS4NbL6U\n\n---\n\n### Quick start\n\n#### Download\n\u003e boost-ext.di requires only one file. Get the latest header [here!](https://raw.githubusercontent.com/boost-ext/di/cpp14/include/boost/di.hpp)\n\n#### Include\n```cpp\n#include \u003cboost/di.hpp\u003e\nnamespace di = boost::di;\n```\n\n#### Compile\n\n* **GCC/Clang**\n  ```sh\n  $CXX -std=c++14 -O2 -fno-exceptions -fno-rtti -Wall -Werror -pedantic-errors file.cpp\n  ```\n* **MSVC**\n  ```sh\n  cl /std:c++14 /Ox /W3 file.cpp\n  ```\n\n#### Quick guide - Create object graph\n\n```cpp\nclass ctor {\npublic:\n  explicit ctor(int i) : i(i) {}\n  int i;\n};\n\nstruct aggregate {\n  double d;\n};\n\nclass example {\n public:\n  example(aggregate a, const ctor\u0026 c) {\n    assert(87.0 == a.d);\n    assert(42 == c.i);\n  };\n};\n\nint main() {\n  const auto injector = di::make_injector(\n    di::bind\u003cint\u003e.to(42),\n    di::bind\u003cdouble\u003e.to(87.0)\n  );\n\n  injector.create\u003cexample\u003e();\n}\n```\n[Run this example on Wandbox](https://wandbox.org/permlink/Dpz6Isld1wxp3p5X).\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003c/th\u003e\n    \u003cth\u003eClang-3.8\u003c/th\u003e\n    \u003cth\u003eGCC-6\u003c/th\u003e\n    \u003cth\u003eMSVC-2015\u003c/th\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eCompilation Time\u003c/td\u003e\n    \u003ctd\u003e0.102s\u003c/td\u003e\n    \u003ctd\u003e0.118s\u003c/td\u003e\n    \u003ctd\u003e0.296s\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eBinary size (stripped)\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e105kb\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eASM x86-64\u003c/td\u003e\n    \u003ctd colspan=\"3\"\u003e\n      \u003cpre\u003e\u003ccode\u003e\nxor eax, eax\nretq\n      \u003c/code\u003e\u003c/pre\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n#### Quick guide - Bind interfaces\n\n```cpp\nstruct interface {\n  virtual ~interface() noexcept = default;\n  virtual int get() const = 0;\n};\n\nclass implementation : public interface {\npublic:\n  int get() const override { return 42; }\n};\n\nstruct example {\n  example(std::shared_ptr\u003cinterface\u003e i) {\n    assert(42 == i-\u003eget());\n  }\n};\n\nint main() {\n  const auto injector = di::make_injector(\n    di::bind\u003cinterface\u003e.to\u003cimplementation\u003e()\n  );\n\n  injector.create\u003cstd::unique_ptr\u003cexample\u003e\u003e();\n}\n```\n[Run this example on Wandbox](https://wandbox.org/permlink/4yBTlH1jvdrsRPes).\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003c/th\u003e\n    \u003cth\u003eClang-3.8\u003c/th\u003e\n    \u003cth\u003eGCC-6\u003c/th\u003e\n    \u003cth\u003eMSVC-2015\u003c/th\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eCompilation Time\u003c/td\u003e\n    \u003ctd\u003e0.102s\u003c/td\u003e\n    \u003ctd\u003e0.118s\u003c/td\u003e\n    \u003ctd\u003e0.296s\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eBinary size (stripped)\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e105kb\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eASM x86-64 (same as `make_unique\u003cexample\u003e`)\u003c/td\u003e\n    \u003ctd colspan=\"3\"\u003e\n      \u003cpre\u003e\u003ccode\u003e\npush   %rbx\nmov    %rdi,%rbx\nmov    $0x8,%edi\ncallq  0x4008e0 \u003c_Znwm@plt\u003e\nmovq   $0x400c78,(%rax)\nmov    %rax,(%rbx)\nmov    %rbx,%rax\npop    %rbx\nretq\n      \u003c/code\u003e\u003c/pre\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n#### Quick guide - Bind templates\n\n```cpp\ntemplate\u003cclass ErrorPolicy = class TErrorPolicy\u003e\nclass simple_updater {\npublic:\n  void update() const {\n    ErrorPolicy::on(\"update\");\n  }\n};\n\ntemplate\u003cclass Updater = class TUpdater\u003e\nclass example {\npublic:\n  explicit example(const Updater\u0026 updater)\n    : updater(updater)\n  { }\n\n  void update() {\n    updater.update();\n  }\n\nprivate:\n  const Updater\u0026 updater;\n};\n\nint main() {\n  struct throw_policy {\n    static void on(const std::string\u0026 str) {\n      throw std::runtime_error(str);\n    }\n  };\n\n  const auto injector = di::make_injector(\n    di::bind\u003cclass TErrorPolicy\u003e.to\u003cthrow_policy\u003e(),\n    di::bind\u003cclass TUpdater\u003e.to\u003csimple_updater\u003e()\n  );\n\n  injector.create\u003cexample\u003e().update();\n  // Terminates with an uncaught exception because of our bound error policy\n}\n```\n[Run this example on Wandbox](https://wandbox.org/permlink/mAzJQD8cTwboIxIx).\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003c/th\u003e\n    \u003cth\u003eClang-3.8\u003c/th\u003e\n    \u003cth\u003eGCC-6\u003c/th\u003e\n    \u003cth\u003eMSVC-2015\u003c/th\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eCompilation Time\u003c/td\u003e\n    \u003ctd\u003e0.102s\u003c/td\u003e\n    \u003ctd\u003e0.118s\u003c/td\u003e\n    \u003ctd\u003e0.296s\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eBinary size (stripped)\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e105kb\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eASM x86-64\u003c/td\u003e\n    \u003ctd colspan=\"3\"\u003e\n      \u003cpre\u003e\u003ccode\u003e\nxor eax, eax\nretq\n      \u003c/code\u003e\u003c/pre\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n#### Quick guide - Bind concepts\n\n```cpp\nstruct Streamable {\n template\u003cclass T\u003e\n auto requires(T\u0026\u0026 t) -\u003e decltype(\n   int( t.read() ),\n   t.write(int)\n );\n};\n\ntemplate\u003cclass Exchange = Streamable(class ExchangeStream)\n         class Engine   = Streamable(class EngineStream)\u003e\nclass example {\npublic:\n  example(Exchange exchange, Engine engine)\n    : exchange(std::move(exchange)), engine(std::move(engine))\n  { }\n\nprivate:\n  Exchange exchange;\n  Engine engine;\n};\n\nint main() {\n  const auto injector = di::make_injector(\n    di::bind\u003cStreamable(class ExchangeStream)\u003e.to\u003cexchange\u003e(),\n    di::bind\u003cStreamable(class EngineStream)\u003e.to\u003cengine\u003e()\n  );\n\n  injector.create\u003cexample\u003e();\n}\n```\n[Run this example on Wandbox](https://wandbox.org/permlink/9QZTRsLkPNholmpj).\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003c/th\u003e\n    \u003cth\u003eClang-3.8\u003c/th\u003e\n    \u003cth\u003eGCC-6\u003c/th\u003e\n    \u003cth\u003eMSVC-2015\u003c/th\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eCompilation Time\u003c/td\u003e\n    \u003ctd\u003e0.102s\u003c/td\u003e\n    \u003ctd\u003e0.118s\u003c/td\u003e\n    \u003ctd\u003e0.296s\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eBinary size (stripped)\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e6.2kb\u003c/td\u003e\n    \u003ctd\u003e105kb\u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd\u003eASM x86-64\u003c/td\u003e\n    \u003ctd colspan=\"3\"\u003e\n      \u003cpre\u003e\u003ccode\u003e\nxor eax, eax\nretq\n      \u003c/code\u003e\u003c/pre\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n---------------------------------------\n\n### Documentation\n\n[](GENERATE_TOC_BEGIN)\n\n* [Introduction](https://boost-ext.github.io/di/index.html)\n    * [Do I use a Dependency Injection already?](https://boost-ext.github.io/di/index.html#do-i-use-a-dependency-injection-already)\n    * [Do I use Dependency Injection correctly?](https://boost-ext.github.io/di/index.html#do-i-use-dependency-injection-correctly)\n    * [Do I need a Dependency Injection?](https://boost-ext.github.io/di/index.html#do-i-need-a-dependency-injection)\n    * [STUPID vs SOLID - \"Clean Code\" Uncle Bob](https://boost-ext.github.io/di/index.html#stupid-vs-solid-clean-code-uncle-bob)\n    * [Do I need a DI Framework/Library?](https://boost-ext.github.io/di/index.html#do-i-need-a-di-frameworklibrary)\n    * [Manual DI - Wiring Mess (Avoid it by using [Boost].DI)](https://boost-ext.github.io/di/index.html#manual-di-wiring-mess-avoid-it-by-using-boostdi)\n    * [Real Life examples?](https://boost-ext.github.io/di/index.html#real-life-examples)\n    * [Why [Boost].DI?](https://boost-ext.github.io/di/index.html#why-boostdi)\n    * [[Boost].DI design goals](https://boost-ext.github.io/di/index.html#boostdi-design-goals)\n    * [Articles](https://boost-ext.github.io/di/index.html#articles)\n    * [Videos](https://boost-ext.github.io/di/index.html#videos)\n    * [[Boost::ext].DI](https://boost-ext.github.io/di/index.html#boostextdi)\n    * [Dependency Injection In General](https://boost-ext.github.io/di/index.html#dependency-injection-in-general)\n    * [Acknowledgements](https://boost-ext.github.io/di/index.html#acknowledgements)\n* [Overview](https://boost-ext.github.io/di/overview.html)\n    * [Quick Start](https://boost-ext.github.io/di/overview.html#quick-start)\n    * [Dependencies](https://boost-ext.github.io/di/overview.html#dependencies)\n    * [Supported/Tested compilers](https://boost-ext.github.io/di/overview.html#supportedtested-compilers)\n    * [Configuration](https://boost-ext.github.io/di/overview.html#configuration)\n    * [Exception Safety](https://boost-ext.github.io/di/overview.html#exception-safety)\n    * [Thread Safety](https://boost-ext.github.io/di/overview.html#thread-safety)\n    * [Error Messages](https://boost-ext.github.io/di/overview.html#error-messages)\n    * [Performance](https://boost-ext.github.io/di/overview.html#performance)\n* [Tutorial](https://boost-ext.github.io/di/tutorial.html)\n    * [0. [Pre] Refactor towards DI](https://boost-ext.github.io/di/tutorial.html#0-pre-refactor-towards-di)\n    * [1. [Basic] Create objects tree](https://boost-ext.github.io/di/tutorial.html#1-basic-create-objects-tree)\n    * [2. [Basic] First steps with bindings](https://boost-ext.github.io/di/tutorial.html#2-basic-first-steps-with-bindings)\n    * [3. [Basic] Decide the life times](https://boost-ext.github.io/di/tutorial.html#3-basic-decide-the-life-times)\n    * [4. [Basic] Annotations to the rescue](https://boost-ext.github.io/di/tutorial.html#4-basic-annotations-to-the-rescue)\n    * [5. [Basic] Split your configuration](https://boost-ext.github.io/di/tutorial.html#5-basic-split-your-configuration)\n    * [6. [Advanced] Dump/Limit your types](https://boost-ext.github.io/di/tutorial.html#6-advanced-dumplimit-your-types)\n    * [7. [Advanced] Customize it](https://boost-ext.github.io/di/tutorial.html#7-advanced-customize-it)\n    * [8. [Advanced] Extend it](https://boost-ext.github.io/di/tutorial.html#8-advanced-extend-it)\n* [Try It Online!](https://boost-ext.github.io/di/try_it.html)\n* [Benchmarks](https://boost-ext.github.io/di/benchmarks.html)\n    * [Performance](https://boost-ext.github.io/di/benchmarks.html#performance)\n    * [C++ Libraries](https://boost-ext.github.io/di/benchmarks.html#c-libraries)\n    * [C++ vs Java vs CLibraries](https://boost-ext.github.io/di/benchmarks.html#c-vs-java-vs-clibraries)\n    * [Usage of C++ vs Java vs CLibraries](https://boost-ext.github.io/di/benchmarks.html#usage-of-c-vs-java-vs-clibraries)\n* [User Guide](https://boost-ext.github.io/di/user_guide.html)\n    * [Injector](https://boost-ext.github.io/di/user_guide.html#injector)\n    * [Bindings](https://boost-ext.github.io/di/user_guide.html#bindings)\n    * [Injections](https://boost-ext.github.io/di/user_guide.html#injections)\n    * [Annotations](https://boost-ext.github.io/di/user_guide.html#annotations)\n    * [Scopes](https://boost-ext.github.io/di/user_guide.html#scopes)\n    * [Modules](https://boost-ext.github.io/di/user_guide.html#modules)\n    * [Providers](https://boost-ext.github.io/di/user_guide.html#providers)\n    * [Policies](https://boost-ext.github.io/di/user_guide.html#policies)\n    * [Concepts](https://boost-ext.github.io/di/user_guide.html#concepts)\n    * [Configuration](https://boost-ext.github.io/di/user_guide.html#configuration)\n* [Examples](https://boost-ext.github.io/di/examples.html)\n    * [Hello World](https://boost-ext.github.io/di/examples.html#hello-world)\n    * [Bindings](https://boost-ext.github.io/di/examples.html#bindings)\n    * [Dynamic Bindings](https://boost-ext.github.io/di/examples.html#dynamic-bindings)\n    * [Forward Bindings](https://boost-ext.github.io/di/examples.html#forward-bindings)\n    * [Is Creatable](https://boost-ext.github.io/di/examples.html#is-creatable)\n    * [Multiple Bindings](https://boost-ext.github.io/di/examples.html#multiple-bindings)\n    * [Binding Non-owning Pointer](https://boost-ext.github.io/di/examples.html#binding-non-owning-pointer)\n    * [Binding Templates](https://boost-ext.github.io/di/examples.html#binding-templates)\n    * [Binding To Constructor](https://boost-ext.github.io/di/examples.html#binding-to-constructor)\n    * [Automatic Injection](https://boost-ext.github.io/di/examples.html#automatic-injection)\n    * [Constructor Signature](https://boost-ext.github.io/di/examples.html#constructor-signature)\n    * [Constructor Injection](https://boost-ext.github.io/di/examples.html#constructor-injection)\n    * [Multiple Interface](https://boost-ext.github.io/di/examples.html#multiple-interface)\n    * [Annotations](https://boost-ext.github.io/di/examples.html#annotations)\n    * [Deduce Scope](https://boost-ext.github.io/di/examples.html#deduce-scope)\n    * [Custom Scope](https://boost-ext.github.io/di/examples.html#custom-scope)\n    * [Eager Singletons](https://boost-ext.github.io/di/examples.html#eager-singletons)\n    * [Modules](https://boost-ext.github.io/di/examples.html#modules)\n    * [Modules (hpp/cpp)](https://boost-ext.github.io/di/examples.html#modules-hppcpp)\n    * [Custom Policy](https://boost-ext.github.io/di/examples.html#custom-policy)\n    * [Custom Provider](https://boost-ext.github.io/di/examples.html#custom-provider)\n    * [Pool Provider](https://boost-ext.github.io/di/examples.html#pool-provider)\n    * [Configuration](https://boost-ext.github.io/di/examples.html#configuration)\n    * [Polymorphism](https://boost-ext.github.io/di/examples.html#polymorphism)\n    * [Inheritance](https://boost-ext.github.io/di/examples.html#inheritance)\n    * [Type Erasure](https://boost-ext.github.io/di/examples.html#type-erasure)\n    * [Function](https://boost-ext.github.io/di/examples.html#function)\n    * [Variant](https://boost-ext.github.io/di/examples.html#variant)\n    * [Templates](https://boost-ext.github.io/di/examples.html#templates)\n    * [Concepts](https://boost-ext.github.io/di/examples.html#concepts)\n* [Extensions](https://boost-ext.github.io/di/extensions.html)\n    * [Injector](https://boost-ext.github.io/di/extensions.html#injector)\n    * [Constructor Bindings](https://boost-ext.github.io/di/extensions.html#constructor-bindings)\n    * [Contextual Bindings](https://boost-ext.github.io/di/extensions.html#contextual-bindings)\n    * [Assisted Injection](https://boost-ext.github.io/di/extensions.html#assisted-injection)\n    * [Extensible Injector](https://boost-ext.github.io/di/extensions.html#extensible-injector)\n    * [Concepts](https://boost-ext.github.io/di/extensions.html#concepts)\n    * [Factory](https://boost-ext.github.io/di/extensions.html#factory)\n    * [Shared Factory](https://boost-ext.github.io/di/extensions.html#shared-factory)\n    * [Lazy](https://boost-ext.github.io/di/extensions.html#lazy)\n    * [Named Parameters](https://boost-ext.github.io/di/extensions.html#named-parameters)\n    * [XML Injection](https://boost-ext.github.io/di/extensions.html#xml-injection)\n    * [Serialize](https://boost-ext.github.io/di/extensions.html#serialize)\n    * [Types Dumper](https://boost-ext.github.io/di/extensions.html#types-dumper)\n    * [UML Dumper](https://boost-ext.github.io/di/extensions.html#uml-dumper)\n    * [Heap Provider](https://boost-ext.github.io/di/extensions.html#heap-provider)\n    * [Mocks Provider](https://boost-ext.github.io/di/extensions.html#mocks-provider)\n    * [Runtime Provider](https://boost-ext.github.io/di/extensions.html#runtime-provider)\n    * [Scoped Scope](https://boost-ext.github.io/di/extensions.html#scoped-scope)\n    * [Session Scope](https://boost-ext.github.io/di/extensions.html#session-scope)\n    * [Shared Scope](https://boost-ext.github.io/di/extensions.html#shared-scope)\n* [FAQ](https://boost-ext.github.io/di/FAQ.html)\n* [CHANGELOG](https://boost-ext.github.io/di/CHANGELOG.html)\n    * [[1.3.0] - 2023-05-23](https://boost-ext.github.io/di/CHANGELOG.html#130-2023-05-23)\n    * [[1.2.0] - 2020-07-21](https://boost-ext.github.io/di/CHANGELOG.html#120-2020-07-21)\n    * [[1.1.0] - 2019-01-07](https://boost-ext.github.io/di/CHANGELOG.html#110-2019-01-07)\n    * [[1.0.2] - 2018-01-04](https://boost-ext.github.io/di/CHANGELOG.html#102-2018-01-04)\n    * [[1.0.1] - 2016-05-04](https://boost-ext.github.io/di/CHANGELOG.html#101-2016-05-04)\n    * [[1.0.0] - 2016-02-22](https://boost-ext.github.io/di/CHANGELOG.html#100-2016-02-22)\n    * [[0.5.0] - 2015-01-12](https://boost-ext.github.io/di/CHANGELOG.html#050-2015-01-12)\n    * [[0.1.0] - 2014-08-15](https://boost-ext.github.io/di/CHANGELOG.html#010-2014-08-15)\n[](GENERATE_TOC_END)\n\n---\n\n**Disclaimer** `boost-ext.di` is not an official Boost library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboost-ext%2Fdi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboost-ext%2Fdi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboost-ext%2Fdi/lists"}