Woid is an extremely customizable high-performance type-erasure header-only library. It provides containers like std::any, std::function and tools for non-intrusive polymorphism.
Key features:
- Performance
- Value semantics
- Move-only type support
- Duck typing
- Extreme customizability
In my current benchmarks it outperforms std::any, std::function, inheritance-based polymorphism and some well-known libraries like function2, boost::te and microsoft/proxy.
I want to make sure the comparison is fair, therefore, your advice on how to better tune the existing libraries is rather welcome.
struct Square {
double side;
double area() const { return side * side; }
};
struct Shape : woid::InterfaceBuilder
::Fun<"area", [](const auto& obj) -> double { return obj.area(); } >
::Build {
auto area() const { return call<"area">(); }
};
auto a = Shape{Square{1.5}}.area();
And of course I'm here to answer your questions.