Version 2015-02-27 available

Added by Bruno BACHELET over 7 years ago

Download full source code

This version uses some new features of C++11, but is still operational in C++03.

Major changes:
- Macro gnx_cpp11 is added to detect C++11.
- Macro gnx_remove_ref is added to remove the reference aspect of a type.
- Macro gnx_remove_const is added to remove the constant aspect of a type.
- Macro gnx_base_type is added to get the "base" of a type (i.e. without reference and constant aspects).
- Function gnx_forward is added to allow "perfect forwarding" (C++11 only).
- Helper functions are added to get rid of the "typename" syntax: gnx_base_type_t, gnx_enable_if_t, gnx_if_t, gnx_remove_const_t, gnx_remove_ref_t (C++11 only).
- Macro gnx_index_concept is variadic when C++11 is detected, which allows getting rid of the "comma" problem.
- Macros gnx_declare_[or|and|not]_concept are renamed gnx_index_[or|and|not]_concept.
- Macro gnx_best_concept is modified to consider the "base" of a type instead of the type directly.
- Helper function gnx_best_concept_t is added, which makes macro gnx_best_concept obsolete (C++11 only).
- Function gnx_matches is added to ease the test whether a type (or a concept) matches a concept or is the same as another type (C++11 only).
- Function gnx_add_models is added to ease the declaration of a modeling (or refinement) relationship between a type (or a concept) and a concept (C++11 only).
- Function gnx_add_uses is added to ease the association of a concept with a context (C++11 only).