The interface and behavior for the following traits and metafunctions (as they currently stand on the CallableTraits develop branch) are unlikely to change, for the most part. I explain what I mean by "for the most part" after this list:
add_member_constadd_member_volatileadd_member_cvadd_member_lvalue_referenceadd_member_rvalue_referenceadd_varargsremove_member_constremove_member_cvremove_member_referenceremove_member_volatileremove_varargsis_const_memberis_cv_memberis_volatile_memberis_lvalue_reference_memberis_rvalue_reference_memberis_reference_memberhas_varargshas_void_returnhas_member_qualifiersremove_member_pointerapply_member_pointerarg_atargsexpand_argsfunction_type
All other library features in CallableTraits are either back on the drawing board, or on the chopping block. Although I'm still working to achieve 100% coverage, most (if not all) of the features listed above are thoroughly tested. Although relatively stable, some things may change as the library approaches version 1.0:
-
The library may adopt a
<type_traits>-style interface, where the following assert will not fail:static_assert(std::is_same<typename add_member_const::type, add_member_const_t>::value, "");
I haven't decided whether to do this yet -- I would like to receive feedback first. The <type_traits> approach is more friendly to higher-order metafunctions and lazy template instantiations. It's also simply more conventional.
-
Invalid template parameters may be handled differently.
-
Currently, the features above do not account for C++17
transaction_safeor C++17noexcept. These will be handled before 1.0 is released.
I hope this answers your question.