Skip to content

alexk7/Hel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hel

Hel is a general purpose C++14 library.

Design

With the help of C++14 features, I try to design this library with a few unusual constraints aimed at making the interface and the implementation simpler (compared to e.g. Boost libraries):

  • All namespace scoped functions are extension points for the library.
    • They can be overloaded by client code.
    • They are always called using their non-qualified name by the library (thus invoking ADL, a.k.a. Koenig Lookup).
    • There is always at least one parameter that is dependent on a type defined by the library.
    • When the library needs an utility that can't follow those rules, it defines a global constexpr function object. It makes it non-overloadable and, as a bonus, a first-class object.
  • No explicit or partial specialization of templates
  • No explicit function template arguments
    • Yes, I even plan to stop using std::forward. It is annoying because the calls shows up in the debugger. std::forward<T>(t) is just syntactic sugar for static_cast<T&&>(t) anyway.
  • No "details" namespaces
    • All namespace scoped entities are part of the public interface.

Why "Hel"?

Hel is the daughter of Loki.

About

General purpose C++14 library.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages