1
0
Fork
You've already forked ftl
0
Freestanding template library
  • C 66.2%
  • C++ 32.8%
  • CMake 0.7%
  • Meson 0.3%
Find a file
Jari Ronkainen ffc9c6c262 Update README.md
Signed-off-by: Jari Ronkainen <jari.ronkainen@sleepers.garden>
2025年06月12日 13:27:03 +03:00
cmake Clean up CMakeLists and generate ftl-config*.cmake 2023年12月05日 15:47:20 +02:00
docs Improve config macros and add documentation 2024年12月02日 14:09:24 +02:00
include/ftl Drop initial reservation size in case of no SBO 2024年12月03日 17:27:03 +02:00
tests Update CMakeLists to correct headers 2024年12月02日 16:21:08 +02:00
.clang-tidy Update clang-tidy 2024年11月28日 23:48:07 +02:00
CMakeLists.txt Update CMakeLists to correct headers 2024年12月02日 16:21:08 +02:00
gcovr.cfg Infrastructure improvements 2024年11月28日 23:48:07 +02:00
LICENCE.md Make a licence file to be extra clear 2022年02月09日 09:38:22 +02:00
meson.build Infrastructure improvements 2024年11月28日 23:48:07 +02:00
README.md Update README.md 2025年06月12日 13:27:03 +03:00

FTL

Or Freestanding Template Library. The goal is to have most (all) of the stuff written here to be eventually compatible with -ffreestanding.

Provides some classes / containers for common use that the standard library does not. Tries to make some of them freestanding-compatible (such as ftl::array<>). With a freestanding-compatible allocator most of the allocator-aware containers can be used in freestanding, but there is some work to be done before that is the case.

Types provided are not strictly drop-in-replacements to std, or strictly follow C++ named requirements, but they are quite close, so their use should be pretty simple. They do not make guarantees the standard does with iterator invalidation, etc.

While meson is the main build system used, every release should have an up-to-date CMakeLists.txt. CMake support master is not guaranteed to be up to date in one way or another. If somebody who uses conan or some other C++ package manager wants to write conanfile or equivalent and contribute that to the project, that would be highly appreciated. One of the goals of the project is to eventually be easily integratable.

All ftl headers use FTL_NAMESPACE definition as the namespace functionality is defined in. This defaults to ftl. If more integration with user codebase is wanted, it is possible to either #define FTL_NAMESPACE <whatever you want> before including ftl headers or just pass -DFTL_NAMESPACE <whatever you want> to the compiler via e.g. CMakeLists or meson.

Licence

MIT Licence

The licence information is also contained at the end of the files, so generally, as they are header-only, you are good as long as you don't explicitly modify or remove the licence from those files no matter your use.