Part II. Miscellaneous classes and functions


36. Typesafe numerical aliases
Base classes
Testing for overflow
Using typesafe numerical aliases in unordered containers
37. Constructing visitors for std::variants
Checking if a type is visited by a variant
38. Sorting by indexes
39. Application identifiers and configuration directories
40. Virtual inheritance-based function callable objects
Virtual inheritance-based callables as reference-counted objects
Using callable objects to implement the callback design pattern
x::invoke_callbacks() helpers
Single execution thread callback container
Lambda weak pointer captures
41. Sentries
42. String conversions
Using x::value_string with custom classes
Convenience functions
43. A C++-ish strtok(); strsplit(), join(), and trim()
44. A joining iterator
45. Specialization for std::hash<void>
46. An ordered cache
47. A tokenizer helper template
48. Shell-like string split
49. The x::timespec class
50. Formatting memory or file sizes
51. A reference-counted vector class
52. Sorted and range vectors
Vectors of ranges
53. A postponed function call or an object call
Converting tuples to parameter packs
54. CSV-formatted data
55. Free disk space
56. Optional function arguments
Declaring an x::optional_args
Retrieving optional arguments
Optional arguments using reference wrappers
Using x::optional_arg_or
57. Loading shared libraries