diff --git a/doc/callable_traits.qbk b/doc/callable_traits.qbk index 89c0c59..4b15a09 100644 --- a/doc/callable_traits.qbk +++ b/doc/callable_traits.qbk @@ -34,8 +34,8 @@ The complexity of callable types in C++ is extensive: *pointers to member functions *qualified overloads of member functions: `const`, `volatile`, `&`, `&&` *C-style varargs (`...`) -*calling conventions (`__cdecl`, `__stdcall`, `__fastcall`, `pascal`, etc.) -*`noexcept` ([@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0012r1.html part of the function type system in C++17]) +*calling conventions/attributes (`__cdecl`, `__stdcall`, `__fastcall`, `pascal`, etc.) +*[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0012r1.html [^noexcept]] [library_name] provides a comprehensive, uniform, and modern type-level interface for the manipulation and inspection of callable types in C++. By filling the gaps where existing library solutions fall short, [library_name] aims to provide such an exhaustive interface for the features listed above that library writers will *never again* need to specialize templates for callable types. [library_name] eliminates the need for horrific template specializations like these: @@ -48,7 +48,7 @@ Several library solutions exist to manipulate these types, or to abstract away t The use cases for [library_name] are closely related to those of [@http://www.boost.org/doc/libs/1_60_0/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html function_traits] and [@http://www.boost.org/doc/libs/1_60_0/libs/function_types/doc/html/index.html FunctionTypes]. -[important [library_name] currently offers no interface for the manipulation of calling conventions. Also, no features are currently implemented to account for C++17's `noexcept`. These features are planned for future versions on supported platforms.] +[important The upcoming C++17 ISO standard brings a language change that adds `noexcept` to signatures. Currently, this is not handled in [library_name], but will be in the future for platforms that support it.] [endsect] @@ -110,6 +110,7 @@ The simplest way to use [library_name] is to include the main header file: [library_name] interface is also broken down by trait into individual header files. To use only the traits you need, include one or more of the following headers, listed alphabetically: +[include_header [link callable_traits.ref_add_calling_convention add_calling_convention]] [include_header [link callable_traits.ref_add_function_const add_function_const]] [include_header [link callable_traits.ref_add_function_cv add_function_cv]] [include_header [link callable_traits.ref_add_function_lvalue add_function_lvalue]] @@ -125,6 +126,7 @@ The simplest way to use [library_name] is to include the main header file: [include_header [link callable_traits.ref_can_invoke can_invoke]] [include_header [link callable_traits.ref_can_invoke_constexpr can_invoke_constexpr]] [include_header [link callable_traits.ref_function_type function_type]] +[include_header [link callable_traits.ref_has_calling_convention has_calling_convention]] [include_header [link callable_traits.ref_has_varargs has_varargs]] [include_header [link callable_traits.ref_has_void_return has_void_return]] [include_header [link callable_traits.ref_is_const_qualified is_const_qualified]] @@ -137,6 +139,7 @@ The simplest way to use [library_name] is to include the main header file: [include_header [link callable_traits.ref_max_arity max_arity]] [include_header [link callable_traits.ref_min_arity min_arity]] [include_header [link callable_traits.ref_qualified_function_type qualified_function_type]] +[include_header [link callable_traits.ref_remove_calling_convention remove_calling_convention]] [include_header [link callable_traits.ref_remove_function_const remove_function_const]] [include_header [link callable_traits.ref_remove_function_cv remove_function_cv]] [include_header [link callable_traits.ref_remove_member_pointer remove_member_pointer]] @@ -149,6 +152,17 @@ The simplest way to use [library_name] is to include the main header file: +[section:ref_add_calling_convention add_calling_convention] +TODO +[heading Example - [^__fastcall] to [^__stdcall]] +[import ../example/changing_calling_conventions.cpp] +[changing_calling_conventions] +[heading Example - [^__cdecl]] +[import ../example/calling_convention_cdecl.cpp] +[calling_convention_cdecl] + +[endsect] + [section:ref_add_function_const add_function_const] TODO [heading Example] @@ -266,6 +280,12 @@ TODO [function_type] [endsect] +[section:ref_has_calling_convention has_calling_convention] +TODO +[heading Example - [^__fastcall] to [^__stdcall]] +[changing_calling_conventions] +[endsect] + [section:ref_has_varargs has_varargs] TODO [heading Example] @@ -353,6 +373,12 @@ TODO [qualified_function_type] [endsect] +[section:ref_remove_calling_convention remove_calling_convention] +TODO +[heading Example - [^__fastcall] to [^__stdcall]] +[changing_calling_conventions] +[endsect] + [section:ref_remove_function_const remove_function_const] TODO [heading Example] diff --git a/doc/html/callable_traits/headers.html b/doc/html/callable_traits/headers.html index df3411b..33173ec 100644 --- a/doc/html/callable_traits/headers.html +++ b/doc/html/callable_traits/headers.html @@ -7,7 +7,7 @@ - +
+ #include<callable_traits/add_calling_convention.hpp>
#include<callable_traits/add_function_const.hpp>
#include<callable_traits/add_function_cv.hpp>
#include<callable_traits/add_function_lvalue.hpp>
@@ -54,6 +55,7 @@
#include<callable_traits/can_invoke.hpp>
#include<callable_traits/can_invoke_constexpr.hpp>
#include<callable_traits/function_type.hpp>
+ #include<callable_traits/has_calling_convention.hpp>
#include<callable_traits/has_varargs.hpp>
#include<callable_traits/has_void_return.hpp>
#include<callable_traits/is_const_qualified.hpp>
@@ -66,6 +68,7 @@
#include<callable_traits/max_arity.hpp>
#include<callable_traits/min_arity.hpp>
#include<callable_traits/qualified_function_type.hpp>
+ #include<callable_traits/remove_calling_convention.hpp>
#include<callable_traits/remove_function_const.hpp>
#include<callable_traits/remove_function_cv.hpp>
#include<callable_traits/remove_member_pointer.hpp>
@@ -85,7 +88,7 @@