Version 2015-02-27 available
This version uses some new features of C++11, but is still operational in C++03.
gnx_cpp11 is added to detect C++11.
gnx_remove_ref is added to remove the reference aspect of a type.
gnx_remove_const is added to remove the constant aspect of a type.
gnx_base_type is added to get the "base" of a type (i.e. without reference and constant aspects).
gnx_forward is added to allow "perfect forwarding" (C++11 only).
- Helper functions are added to get rid of the "typename" syntax:
gnx_remove_ref_t (C++11 only).
gnx_index_concept is variadic when C++11 is detected, which allows getting rid of the "comma" problem.
gnx_declare_[or|and|not]_concept are renamed
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).
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).
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).
gnx_add_uses is added to ease the association of a concept with a context (C++11 only).