bWidgets
Core widget toolkit designed for Blender
Coding Style

Information on the preferred coding "style" to use for bWidgets source code.

In short: Be considerate, be reasonable!

Although bWidgets is written in C++, it's used rather conservatively. Crazy template usage a la type-traits is avoided. Same goes for operator overloading for complex data-types, lambdas, multiple inheritance, etc.
Also note that we stick to using C++11 (because of Blender).
In fact, if possible we try to stick to a pretty C-like C++ usage. It's more like we use C++ features to compensate C weaknesses.

Some features from C++ that make sense for us and that we do use: namespaces, constructors/destructors, smart pointers (unique_ptr() mainly), references, callable objects (functors), simple inheritance, standard library, aliases, constexpr.
We are a bit wary of using templates and operator overloading. They are used, but only for very simple cases where they make sense. auto can be used for variables with obvious type, otherwise it should be avoided too.

One thing we are unsure about is exception handling. Should we use C++ exceptions? Are alternatives preferable (return codes, std::optional, etc)?