uSTL 3.0

A partial implementation of the C++ Standard Template Library optimized for size.

Tags c++ standard template library
License MITL
State mature

Recent Releases

3.018 Feb 2022 03:16 minor feature: 2022-02-17 Release 3.0 Raise minimum required gcc version to 5. Always use c++14. Only support building a static library. Only support standalone build, without libstdc++. Use consistent configure flag names. Use more constexpr. build problems with up to gcc 12. Mention forcefully that this library is now obsolete.
2.815 Dec 2018 16:05 minor feature: Mark the project obsolete. Add ustl::begin, cbegin, end, cend, data, and size. Add istringstream(const char*) constructor. Add to_string(unsigned). Add operator!=(pointer) overload to smart pointers. Correct advance to modify the pointer argument. Preallocate string returned by to_string. istringstream::read will now keep incomplete reads. Require clang 4 to for c++11 on OSX. Remove exchange from pre-14 code.
2.701 Aug 2018 23:25 minor bugfix: Make vector resize take a second argument for fill value. vector dtor should not call dtors when linked. exchange algo should be c++14 only. Make swap implementation shared with c++98. Fix some warnings from -Weffc++. Fix new warnings and errors from gcc 8.1. Add workaround for gcc 8.1 bug 85695. ifdef out _long4grain alignof spec on 32bit platforms. Replace C-style casts with C++-style casts. Remove obsolete --without-mmx configure flag.
2.614 Dec 2017 19:45 minor feature: Erase cow sometimes truncating strings. Hang in istringstream read_number at end of stream. Test failures new with gcc 7.2. Configure directory detection with new gcc. Remove operator templates for ustl types. Add pkg-config file. Do not use memcpy in fallback implementation of copy_n_fast. Remove -march=native from default compiler flags. Add configure --with-native flag.
2.526 Nov 2016 11:45 minor feature: Implement chrono. Implement ratio. Implement gcd and lcm. Implement exchange, clamp, minmax, and minmax_element algorithms. Implement front_insert_iterator and move_iterator. Add uninitialized_default_construct and uninitialized_value_construct. Implement uninitialized_move, destroy_at, and destroy_n. Add void_t, is_swappable, and common_type type traits. Implement c++11 float fields in numeric_limits. Implement ostringstream fill and setfill manip. some clang compatibility warnings. Give descriptive names to tests.
2.413 May 2016 14:25 minor feature: Implement scope_exit and unique_resource. Implement c++11 members of priority_queue, stack, and queue. Do not remove lvalue make_pair for c++11. Previously broken heap implementation. Utf8out_iterator post++ to not create a new iterator. A more thorough utf8 encoder test. Add constexpr to definition of string::npos. Support dash shell for configure. Compiling --with-libstdc++. Early inclusion of system headers when using force-inline.
2.318 Jan 2016 10:45 minor feature: Implement unique_ptr and shared_ptr. Implement atomic. Implement is_constructible, is_destructible, is_assignable, and variations. Enable c++14 compilation for clang 3.6+ and gcc 5+. Numerous improvements to streams API. Add all stream formatting manipulators: setw, setprecision, etc. Increase default stream buffer size to improve ifstream/ofstream performance. Implement string-number conversions. Rename libc_exception to system_error; in c++14 that is now a standard. to compile on Debian and OS X.
2.229 Jan 2015 16:06 minor feature: Implement C++11 type traits Some fixes for incorrect behavior of array Coding style changes based on "Effective C++" recommendations Fix string vformat sometimes leaving string empty Fix crash when using string.erase(i,string::npos)