Clone wiki

mili / Home


MiLi is a collection of useful C++ libraries, composed only by headers. No installation, no makefile, no complications: just KISS. Simple solutions for simple problems.


!MiLi version 17 includes the following libraries (one header file length each):

  • bitwise-enums: library for type-safe bitwise operations based on enums.
  • pre-pos caller: library for wrapping object methods calls.
  • promotion-disable: library for disabling undesired C++ type conversions.
  • delete-container: deletes the elements of an STL container filled with pointers.
  • factory: provides a simple machinery to create subclasses from a given key.
  • invariants: provides invariants for function arguments and classes.
  • type-mapper: simple type mapping declarations.
  • properties: simple properties implementation.
  • string-utils: various string utilities, such as case-insensitive strings and number/text conversions.
  • container-utils: UPDATED! generic STL container utilities, optimized for specific containers. (formerly find-utils).
  • stream-utils: i/o stream utilities for reading/writing formatted data (such as CSV).
  • arith-utils: FIXED! arithmetic utilities (random numbers, range checks).
  • binary-streams: binary streams for serializing data.
  • loop-unrolling: compile-time loop unrolling using TMP.
  • compile-assert: compile-time (a.k.a. static) assertions.
  • template-info: template parameters information (a la typeinfo).
  • fast-list: very optimized list for high performance.
  • ranker: UPDATED! ranker library.
  • coroutines: simple and os-independant coroutines library.
  • generic exception: utilities to generate a custom exception hierarchy.
  • variants-set: NEW! a simple set of heterogenic types library.
  • circular-buffer: NEW! A circular buffer.
  • some more new libraries not documented yet.

NEWS: License change!

MiLi has changed the license from GPLv3 to Boost 1.0, making it suitable for some commercial projects and still being free software.


MiLi is maintained at FuDePAN, an NGO/NPO for bioinformatics research. If you find !MiLi useful, please consider to donate so we can keep up the research and maintenance.



Just #include "mili.h". You can disable then inclusion of individual libraries by adding a specific #define (refer to README), or just include specific headers ([IncludingSpecificHeaders note]). Additionally, you may enclose all the libraries within the mili namespace by #defining MILI_NAMESPACE before including "mili.h".

More Libraries

Coming soon: PendingLibraries

Feel free to ask for more functionalities.

Need it for commercial use? Contact the email address contained in the README.


See How To Contribute.

This project belongs to FuDePAN.