📄 reference.rst
字号:
:Returns: a “singleton instance”: the same object will be returned on each invocation of ``get()``. :Thread Safety: ``get()`` can be called from multiple threads simultaneously.``parameters``--------------Provides an interface for assembling the actual arguments to a`forwarding function` into an |ArgumentPack|, in which any|positional| arguments will be tagged according to thecorresponding template argument to ``parameters``. .. _forwarding function: `forwarding functions`_:Defined in: `boost/parameter/parameters.hpp`____ ../../../../boost/parameter/parameters.hpp.. parsed-literal:: template <class P0 = *unspecified*, class P1 = *unspecified*, …class P\ β = *unspecified*> struct parameters { template <class A0, class A1 = *unspecified*, …class A\ β = *unspecified*> struct `match`_ { typedef … type; }; template <class A0> |ArgumentPack|_ `operator()`_\(A0 const& a0) const; template <class A0, class A1> |ArgumentPack|_ `operator()`_\(A0 const& a0, A1 const& a1) const; :vellipsis:`\ . . . ` template <class A0, class A1, …class A\ β> |ArgumentPack|_ `operator()`_\(A0 const& a0, A1 const& a1, …A\ β const& a\ β) const; };:Requires: ``P0``, ``P1``, … ``P``\ β are models of |ParameterSpec|_. .. Note:: In this section, ``R``\ *i* and ``K``\ *i* are defined as follows, for any argument type ``A``\ *i*: | ``R``\ *i* is ``A``\ *i*\ 's |intended argument type| | | if ``A``\ *i* is a result type of ``keyword<T>::``\ |operator=|_ | then | ``K``\ *i* is ``T`` | else | ``K``\ *i* is ``P``\ *i*\ 's |keyword tag type|... _match:``match`` A |Metafunction|_ used to remove a `forwarding function`_ from overload resolution. :Returns: if ``P0``, ``P1``, …\ ``P``\ β are *satisfied* (see below), then ``parameters<P0,P1,…Pβ>``. Otherwise, ``match<A0,A1,…Aβ>::type`` is not defined. ``P0``, ``P1``, …\ ``P``\ β are **satisfied** if, for every *j* in 0…β, either: * ``P``\ *j* is the *unspecified* default * **or**, ``P``\ *j* is a specialization of |keyword|_, * **or**, ``P``\ *j* is |optional|_ ``<X,F>`` and either - ``X`` is not ``K``\ *i* for any *i*, - **or** ``X`` is some ``K``\ *i* and ``mpl::apply<F,R``\ *i*\ ``>::type::value`` is ``true`` * **or**, ``P``\ *j* is |required|_ ``<X,F>``, and - ``X`` is some ``K``\ *i*, **and** - ``mpl::apply<F,R``\ *i*\ ``>::type::value`` is ``true``.. _operator():``operator()`` .. parsed-literal:: template <class A0> |ArgumentPack|_ operator()(A0 const& a0) const; :vellipsis:`\ . . . ` template <class A0, …class A\ β> |ArgumentPack|_ `operator()`_\(A0 const& a0, …A\ β const& a\ β) const; :Returns: An |ArgumentPack|_ containing, for each ``a``\ *i*, - if ``a``\ *i*, is a single-element |ArgumentPack|, its element - Otherwise, a |tagged reference| with |kw|_ ``K``\ *i* and *value* ``a``\ *i*.. |optional| replace:: ``optional``.. |required| replace:: ``required``.. _optional:.. _required:``optional``, ``required``--------------------------These templates describe the requirements on a function parameter.:Defined in: `boost/parameter/parameters.hpp`____ ../../../../boost/parameter/parameters.hpp:Specializations model: |ParameterSpec|_.. parsed-literal:: template <class Tag, class Predicate = *unspecified*> struct optional; template <class Tag, class Predicate = *unspecified*> struct required;The default value of ``Predicate`` is an unspecified |Metafunction|_ that returns``mpl::true_`` for any argument... |Metafunction| replace:: :concept:`Metafunction`.. _Metafunction: ../../../mpl/doc/refmanual/metafunction.html//////////////////////////////////////////////////////////////////////////////Metafunctions=============A |Metafunction|_ is conceptually a function that operates on, andreturns, C++ types.``binding``-----------Returns the result type of indexing an argument pack with a|keyword tag type| or with a |tagged default|.:Defined n: `boost/parameter/binding.hpp`____ ../../../../boost/parameter/binding.hpp.. parsed-literal:: template <class A, class K, class D = void> struct binding { typedef … type; };:Requires: ``A`` is a model of |ArgumentPack|_.:Returns: the reference type of the |tagged reference| in ``A`` having |keyword tag type| ``K``, if any. If no such |tagged reference| exists, returns ``D``.``lazy_binding``----------------Returns the result type of indexing an argument pack with a |taggedlazy default|.:Defined in: `boost/parameter/binding.hpp`____ ../../../../boost/parameter/binding.hpp.. parsed-literal:: template <class A, class K, class F> struct lazy_binding { typedef … type; };:Requires: ``A`` is a model of |ArgumentPack|_.:Returns: the reference type of the |tagged reference| in ``A`` having |keyword tag type| ``K``, if any. If no such |tagged reference| exists, returns ``boost::``\ |result_of|_\ ``<F()>::type``. [#no_result_of]_//////////////////////////////////////////////////////////////////////////////Code Generation Macros======================Macros in this section can be used to ease the writing of codeusing the Parameter libray by eliminating repetitive boilerplate.``BOOST_PARAMETER_FUN(r,n,l,h,p)``----------------------------------Generates a sequence of `forwarding function`_ templates named``n``, with arities ranging from ``l`` to ``h`` , returning ``r``,and using ``p`` to control overload resolution and assign tags topositional arguments.:Defined in: `boost/parameter/macros.hpp`____ ../../../../boost/parameter/macros.hpp:Requires: ``l`` and ``h`` are nonnegative integer tokens such that ``l`` < ``h``Generates .. parsed-literal:: template <class A1, class A2, …class A##\ **l**> r name( A1 const& a1, A2 const& a2, …A\ **l** const& x\ **l** , typename **p**::match<A1,A2,…A\ **l**>::type p = **p**\ ()) { return **name**\ _with_named_params(**p**\ (x1,x2,…x\ **l**)); } template <class A1, class A2, …class A\ **l**, class A\ ##\ BOOST_PP_INC_\ (**l**)> r name( A1 const& a1, A2 const& a2, …A\ **l** const& x\ **l** , A\ ##\ BOOST_PP_INC_\ (**l**) const& x\ ##\ BOOST_PP_INC_\ (**l**) , typename **p**::match<A1,A2,…A\ **l**,A\ ##\ BOOST_PP_INC_\ (**l**)>::type p = **p**\ ()) { return **name**\ _with_named_params(**p**\ (x1,x2,…x\ **l**,x\ ##\ BOOST_PP_INC_\ (**l**))); } :vellipsis:`\ . . . ` template <class A1, class A2, …class A\ **h**> r name( A1 const& a1, A2 const& a2, …A\ **h** const& x\ **h** , typename **p**::match<A1,A2,…A\ **h**>::type p = **p**\ ()) { return **name**\ _with_named_params(**p**\ (a1,a2,…a\ **h**)); }.. _BOOST_PP_INC: ../../../preprocessor/doc/ref/inc.html``BOOST_PARAMETER_KEYWORD(n,k)``--------------------------------Generates the declaration of a |keyword tag type| named ``k`` innamespace ``n``, and a corresponding |keyword object| definition inthe enclosing namespace.:Defined in: `boost/parameter/keyword.hpp`____ ../../../../boost/parameter/keyword.hppGenerates .. parsed-literal:: namespace **n** { struct **k**; } namespace { boost::parameter::keyword<*tag-namespace*::**k**>& **k** = boost::parameter::keyword<*tag-namespace*::**k**>::get(); }``BOOST_PARAMETER_MATCH(p,a,x)``--------------------------------Generates a defaulted parameter declaration for a `forwardingfunction`_.:Defined in: `boost/parameter/match.hpp`____ ../../../../boost/parameter/match.hpp:Requires: ``a`` is a `Boost.Preprocessor sequence`__ of the form .. parsed-literal:: (A0)(A1)…(A\ *n*)__ http://www.boost.org/libs/preprocessor/doc/data.htmlGenerates .. parsed-literal:: typename **p**::match<**A0**\ ,\ **A1**\ …,\ **A**\ *n*>::type **x** = **p**\ ()Configuration Macros====================``BOOST_PARAMETER_MAX_ARITY``-----------------------------Determines the maximum number of arguments supported by thelibrary. Will only be ``#defined`` by the library if it is notalready ``#defined``... |BOOST_PARAMETER_MAX_ARITY| replace:: ``BOOST_PARAMETER_MAX_ARITY``:Defined in: `boost/parameter/config.hpp`____ ../../../../boost/parameter/config.hpp:Default Value: ``5``Tutorial========Follow `this link`__ to the Boost.Parameter tutorialdocumentation. __ index.html#tutorial//////////////////////////////////////////////////////////////.. [#thread] References to tag objects may be initialized multiple times. This scenario can only occur in the presence of threading. Because the C++ standard doesn't consider threading, it doesn't explicitly allow or forbid multiple initialization of references. That said, it's hard to imagine an implementation where it could make a difference. .. [#no_result_of] Where |BOOST_NO_RESULT_OF|_ is ``#defined``, ``boost::``\ |result_of|_\ ``<F()>::type`` is replaced by ``F::result_type``... |result_of| replace:: ``result_of``.. _result_of: ../../../utility/utility.htm#result_of.. |BOOST_NO_RESULT_OF| replace:: ``BOOST_NO_RESULT_OF``.. _BOOST_NO_RESULT_OF: ../../../utility/utility.htm#BOOST_NO_RESULT_OF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -