Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Reference

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 13. Boost.Function

BoostC++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Reference

Definitions

  • совместимо если для данного набора аргументов типов Arg1, Arg2, ... ArgN и a тип возврата ResultType, Надлежащая следующая функция хорошо сформирована:

      // if ResultType is not void
      ResultType foo(Arg1 arg1, Arg2 arg2, ..., ArgN argN)
      {
        return f(arg1, arg2, ..., argN);
      }
      // if ResultType is void
      ResultType foo(Arg1 arg1, Arg2 arg2, ..., ArgN argN)
      {
        f(arg1, arg2, ..., argN);
      }
    

    Специальное положение предусмотрено для указателей членам функции. Хотя они не являются объектами функции, Boost. Функция будет адаптировать их внутренне для функционирования объектов. Это требует чтобы указатель на функцию члена формы R (X::*mf)(Arg1, Arg2, ..., ArgN) cv-quals был адаптирован к объект функции со следующим оператором вызова функции перегрузка:

      template<typename P>
      R operator()(cv-quals P& x, Arg1 arg1, Arg2 arg2, ..., ArgN argN) const
      {
        return (*x).*mf(arg1, arg2, ..., argN);
      }
    

      // if ResultType is not void
      ResultType foo(Arg1 arg1, Arg2 arg2, ..., ArgN argN)
      {
        return f(arg1, arg2, ..., argN);
      }
      // if ResultType is void
      ResultType foo(Arg1 arg1, Arg2 arg2, ..., ArgN argN)
      {
        f(arg1, arg2, ..., argN);
      }
    

    A special provision is made for pointers to member functions. Though they are not function objects, Boost.Function will adapt them internally to function objects. This requires that a pointer to member function of the form R (X::*mf)(Arg1, Arg2, ..., ArgN) cv-quals be adapted to a function object with the following function call operator overloads:

      template<typename P>
      R operator()(cv-quals P& x, Arg1 arg1, Arg2 arg2, ..., ArgN argN) const
      {
        return (*x).*mf(arg1, arg2, ..., argN);
      }
    

    [ORIG_END] -->
  • stateless если это указатель функции или если boost::is_stateless<F> Это правда. Сооружение или копирование на буль. Функция объект от объекта функции апатрида не вызывает исключений брошены и не будут выделять никакого хранилища.

namespace boost {
  class bad_function_call;
  class function_base;
  template<typename R, typename T1, typename T2, ..., typename TN> 
    class functionN;
  template<typename T1, typename T2, ..., typename TN> 
    void swap(functionN<T1, T2, ..., TN>&, functionN<T1, T2, ..., TN>&);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator==(const functionN<T1, T2, ..., TN>&, Functor);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator==(Functor, const functionN<T1, T2, ..., TN>&);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator==(const functionN<T1, T2, ..., TN>&, 
                    reference_wrapper<Functor>);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator==(reference_wrapper<Functor>, 
                    const functionN<T1, T2, ..., TN>&);
  template<typename T1, typename T2, ..., typename TN, typename U1, 
           typename U2, ..., typename UN> 
    void operator==(const functionN<T1, T2, ..., TN>&, 
                    const functionN<U1, U2, ..., UN>&);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator!=(const functionN<T1, T2, ..., TN>&, Functor);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator!=(Functor, const functionN<T1, T2, ..., TN>&);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator!=(const functionN<T1, T2, ..., TN>&, 
                    reference_wrapper<Functor>);
  template<typename T1, typename T2, ..., typename TN, typename Functor> 
    bool operator!=(reference_wrapper<Functor>, 
                    const functionN<T1, T2, ..., TN>&);
  template<typename T1, typename T2, ..., typename TN, typename U1, 
           typename U2, ..., typename UN> 
    void operator!=(const functionN<T1, T2, ..., TN>&, 
                    const functionN<U1, U2, ..., UN>&);
  template<typename Signature> class function;
  template<typename Signature> 
    void swap(function<Signature>&, function<Signature>&);
  template<typename Signature, typename Functor> 
    bool operator==(const function<Signature>&, Functor);
  template<typename Signature, typename Functor> 
    bool operator==(Functor, const function<Signature>&);
  template<typename Signature, typename Functor> 
    bool operator==(const function<Signature>&, reference_wrapper<Functor>);
  template<typename Signature, typename Functor> 
    bool operator==(reference_wrapper<Functor>, const function<Signature>&);
  template<typename Signature1, typename Signature2> 
    void operator==(const function<Signature1>&, const function<Signature2>&);
  template<typename Signature, typename Functor> 
    bool operator!=(const function<Signature>&, Functor);
  template<typename Signature, typename Functor> 
    bool operator!=(Functor, const function<Signature>&);
  template<typename Signature, typename Functor> 
    bool operator!=(const function<Signature>&, reference_wrapper<Functor>);
  template<typename Signature, typename Functor> 
    bool operator!=(reference_wrapper<Functor>, const function<Signature>&);
  template<typename Signature1, typename Signature2> 
    void operator!=(const function<Signature1>&, const function<Signature2>&);
}
namespace boost {
  template<typename F, typename G> bool function_equal(const F&, const G&);
}

PrevUpHomeNext

Статья Reference раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 13. Boost.Function может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 13. Boost.Function ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:34:35/0.011544942855835/1