function_traits.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 57 行

QBK
57
字号
[/   Copyright 2007 John Maddock.  Distributed under the Boost Software License, Version 1.0.  (See accompanying file LICENSE_1_0.txt or copy at  http://www.boost.org/LICENSE_1_0.txt).][section:function_traits function_traits][def __argN '''arg<replaceable>N</replaceable>_type''']   template <class F>   struct function_traits   {      static const std::size_t    arity = __below;      typedef __below           result_type;      typedef __below           __argN;    };The class template function_traits will only compile if:* The compiler supports partial specialization of class templates.* The template argument `F` is a /function type/, note that this ['[*is not]] the same thing as a /pointer to a function/.[tipfunction_traits is intended to introspect only C++ functions of the form R (), R( A1 ), R ( A1, ... etc. ) and not function pointers or class member functions. To convert a function pointer type to a suitable type use __remove_pointer.][table Function Traits Members [[Member] [Description]] [[`function_traits<F>::arity`]    [An integral constant expression that gives the number of arguments accepted by the function type `F`.]][[`function_traits<F>::result_type`]    [The type returned by function type `F`.]][[`function_traits<F>::__argN`]    [The '''<replaceable>N</replaceable>th''' argument type of function type `F`, where `1 <= N <= arity` of `F`.]]][table Examples[[Expression] [Result]] [[`function_traits<void (void)>::arity`] [An integral constant expression that has the value 0.]][[`function_traits<long (int)>::arity`] [An integral constant expression that has the value 1.]][[`function_traits<long (int, long, double, void*)>::arity`] [An integral constant expression that has the value 4.]][[`function_traits<void (void)>::result_type`] [The type `void`.]][[`function_traits<long (int)>::result_type`] [The type `long`.]][[`function_traits<long (int)>::arg1_type`] [The type `int`.]][[`function_traits<long (int, long, double, void*)>::arg4_type`] [The type `void*`.]][[`function_traits<long (int, long, double, void*)>::arg5_type`] [A compiler error: there is no `arg5_type` since there are only four arguments.]][[`function_traits<long (*)(void)>::arity`] [A compiler error: argument type is a /function pointer/, and not a /function type/.]]]   [endsect]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?