Note: all C++ names mentioned hereafter are relative to namespace tools
, file names are relative to folder cpptools
.
- Range view library, featuring:
ranges::dereference_view
ranges::reverse_pair_view
ranges::reverse_map_pair_view
ranges::member_view
- For each of these views, CPOs acting as range adaptor objects and range adaptor closure objects in namespace
views
- Command-line argument parsing facility in namespace
cli
- New exception category
arg_parse_exception
- New exception category
- New exception category
lookup_exception
(replaces inaptly named exception categoryrange_exception
) - New functions
narrow
andwiden
in headerutility/string.hpp
- Minor adjustments:
- Unit tests for (nearly) everything which didn't have them
- Fixed wrong offset calculation in
contiguous_storage
- Fixed implementation of
to_string
- Moved various small function definitions into headers and made them
inline
- Breaking changes:
- Exception category
range_exception
was removed (in favor of new categorylookup_exception
) - Header
interruptible.hpp
was moved from directorythread/interface
to directorythread
- Header
allocator.hpp
was moved from directoryutility
to directoryutility/detail
- Removed namespace
cli::input
, all names that were declared in it are now in namespacecli
- Removed namespace
string
, all names that were declared in it are now in namespace::tools
- Concept
stringable
was moved from headerutility/concepts.hpp
to headerutility/to_string.hpp
- Class template
sine_generator
was moved out of namespacemath
clamped_range
andwrapping_range
were renamed toclamped_value
andwrapping_value
respectively- Removed operator overloads on both
clamped_value
andwrapping_value
which led to confusing semantics - Fixed incorrect arithmetic on both
clamped_value
andwrapping_value
- Reordered constructor parameters of
monitored_value
- Exception category
- CMake:
- Fixed a warning flag being wrongly passed to MSVC, causing build to fail
- Export CppTools CMake module as part of installed package, its path is automatically appended to CMake module paths when the installed package is imported
Thing | Description | View source |
---|---|---|
bitwise_enum_ops |
Namespace containing concept-enabled operator overloads to perform bitwise operation on enums | v1.0 / latest |
clamped_range |
Wrapper for a value to be constrained in a certain range, clamping it to its bounds whenever they should be exceeded | v1.0 / latest |
contiguous_storage |
Wrapper that provides type-safe access to unitialized memory | v1.0 / latest |
exception |
Extensible CRTP-based exception model with convenient macros to throw them | v1.0 / latest |
interruptible |
Interface for an interruptible task-runner | v1.0 / latest |
monitored_value |
Wrapping around a value, which raises a externally provided flag whenever the value is modified | v1.0 / latest |
Predicates | Collection of arithmetic and logic predicate generators | v1.0 / latest |
String toolbox | Collection of common operations to be performed on strings | v1.0 / latest |
tree |
Arbitrary tree with complete allocator-awareness | v1.0 / latest |
worker |
Proposed implementation of interruptible |
v1.0 / latest |
wrapping_range |
Wrapper for a value to be constrained in a certain range, wrapping around whenever bounds should be exceeded | v1.0 / latest |
Thing | Description | View source |
---|---|---|
Heterogenous lookup facilities | Collection of types which can be used to enable hetoregenous lookup on associative containers | v1.0 / latest |
Merge strategies | Collection of operations describing how an object can be merged into another | v1.0 / latest |
Parameter deduction facitilies | Functions to be used in unevaluated contexts to deduce in a tuple the argument types of another function | v1.0 / latest |
Unary operations | Collection of generic operations that can be handy to name rather than to write out | v1.0 / latest |
- Install to a path on your CMAKE_PREFIX_PATH list
find_package( cpptools 1.0 REQUIRED )
should succeed and expose three targets:cpptools::cpptools_static
, which can be statically linked againstcpptools::cpptools_shared
, which can be dynamically linked againstcpptools::cpptools
, an alias tocpptools::cpptools_static
- The installed package is relocatable.
Builds without warnings on Clang 18.1.8 and MSVC 19.40, in both debug and release modes.