Skip to content
sarah edited this page Feb 2, 2022 · 20 revisions

veg is a c++ utility library with some commonly used vocabulary types, functional utilities, assertion macros and basic struct reflection.

Notes

Aside from the default, copy, and move constructors, all the constructors in this library are tagged with empty tag types. They are documented as

Class::Class(TagType /* tag_name */, Args...);
// used like
Class c{tag_name, args...};

In this documentation's code examples, the relevant header includes and a using namespace veg; declaration are implicit.

Goals

  • correctness
  • compile time and runtime performance
  • noexcept correctness
  • being sfinae friendly and providing friendly diagnostics
  • constexpr support (since c++14)
  • exception safety

Non-goals

  • abi stability
  • api stability (until 1.0)
  • compatibility with standard library beyond what is provided for other types. i'm not opposed to the idea, it's just a bunch of work
  • constexpr heap allocations
  • full c++11 constexpr support

Various types for general-purpose programming.

Utilities for debugging and comparison operations.

Tools for working with function objects, such as composition, overloading, wrapping a reference, etc.

Tools for low level memory management, as well as veg's allocator interface.

#include <veg/type_traits/...>
Concept emulation and concept-like type traits.

Clone this wiki locally