cppstl
Bindings for the C++ Standard Template Library (STL)
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:24 |
Tags
Installation
nimble install cppstl
choosenim install cppstl
git clone https://github.com/BigEpsilon/nim-cppstl
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| cppstl | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/BigEpsilon/nim-cppstl |
|---|---|
| Homepage | https://github.com/BigEpsilon/nim-cppstl |
| Documentation | View Documentation |
| Registry Source | nimble_official |
README
Nim bindings for the C++ STL
Introduction
This library is a Nim wrapper for C++ Standard Template Library (STL) class. This library is obviously only compatible with the C++ backend
I recommand using this bindings only in two cases: * When wrapping a C++ library (But make sure to offer a Nim idomatic API that does not expose the STL to the user if possible). * In some performance critical code where the cost of converting Nim types to c++ types is problematic (like embeded devices).
Installation
nimble install cppstl
Add the following lines to your .nimble:
backend = "cpp"
requires "cppstl"
Limitations
cppstl currently wraps :
std::stringstd::basic_stringstd::vectorstd::complex-
std::pair -
Smart pointers are partially supported:
std::unique_ptrstd::shared_ptr
Avoid using wrapped STL objects in top-level Nim scope.
Most of the times it works on Nim 1.x but leads to both compile-time and runtime errors on 2.x. So instantiate them in subroutines only to ensure portability between 1.x and 2.x.
I.e this usecase is not recommended:
when isMainModule:
var vec = initCppVector[int]()
vec.pushBack(20)
Use this one instead:
when isMainModule:
proc foo =
var vec = initCppVector[int]()
vec.pushBack(20)
foo()
Contributions
All contributions are welcome!
If there is a missing function or class, that you need, don't be shy to open an issue or a PR.
Running Tests
nimble test
or
testament p "tests/t*.nim"
Usage
The documentation is here : https://clonkk.github.io/nim-cppstl/cppstl.html
You can find more use-case in the tests folder.
License
This code is licensed under MIT license (see LICENSE.txt for details)