Welcome to the C++ library Loki.

Loki is a C++ library of designs, containing flexible implementations of common design patterns and idioms.

Philosophy

Loki - The Freedom to Choose.

  • In Norse mythology, the god Loki was known as "the Provider of Strange Gifts". The other Norse gods liked Loki because he would give them useful tools and gifts which allowed them to do what they wanted to do - but only better.

  • Loki delivers ready-to-use library elements packaged in bite-sized chunks. Small in size but mighty in capabilities, Loki exploits combinatorial design via policies to accommodate unbounded designs within small, simple components.

  • Loki users only have to pay for the features they want. Each of Loki's components can be used in isolation from the others.

  • "Small is beautiful" - Loki's internal dependencies are small.

  • "Multiplicative is splendid." - Loki's particular focus is on obtaining multiplicative behaviors (i.e., fine-grained, specialized designs), by combining small, abstract bits of behavior (policies).

  • Loki focuses on strategy not tactics. Design, not bits. Architectural components, not the kitchen sink.

  • As Loki is a library of designs and not the design of a library, it should make minimum assumptions about its environment and provide appropriate hooks wherever some default decision is chosen.

  • Loki doesn't cater to lesser compilers. Loki aims at writing readable code within the realm of standard C++.

  • The components ideally are small, easy to understand and use correctly, useful either in isolation or together, and of high impact in projects.

Wikipedia on Loki library