-
Notifications
You must be signed in to change notification settings - Fork 2
design philosophy
Like every library crap is supposed to solve few particular probemls. It is design to fulfill several gols. Therefore it is designed according to several rules.
Crap is supposed to simplify template meta programming. As no library is absolutely universal crap is trying to be as generic as possible.
Crap is heavily inspired by C++ STL library. Mainly by STL algorithms but not only. Since most of C++ language users also make use of STL in their daily programming such approach shoulg give intuitive API.
It is designed to cooperate with C++11 language version or higher (sorry, C++03 and C++98 are not being supported). If higher versions of language are in usage some elements (like fold expressions from C++17) are being utilised.
Although crap is using preprocesor (for instance to recognise language version as described above), there are no strange macros.
With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.
There are no secret elements. No "detail", "implementation", etc. namespaces. Unless no strange operations are being used like:
#define private public
all accessible elements are supposed and ment to be used.