Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::experimental::function<R(Args...)>::function

      From cppreference.com
      <cpp‎ |experimental‎ |function
       
       
       
       
       
      function()noexcept;
      (1)(library fundamentals TS)
      function(std::nullptr_t)noexcept;
      (2)(library fundamentals TS)
      function(const function& other);
      (3)(library fundamentals TS)
      function( function&& other);
      (4)(library fundamentals TS)
      template<class F>
      function( F f);
      (5)(library fundamentals TS)
      (6)
      template<class Alloc>
      function(std::allocator_arg_t,const Alloc& alloc)noexcept;
      (library fundamentals TS)
      function(std::allocator_arg_t,
               const allocator_type& alloc)noexcept;
      (library fundamentals TS v3)
      (7)
      template<class Alloc>

      function(std::allocator_arg_t,const Alloc& alloc,

               std::nullptr_t)noexcept;
      (library fundamentals TS)
      function(std::allocator_arg_t,const allocator_type& alloc,
               std::nullptr_t)noexcept;
      (library fundamentals TS v3)
      (8)
      template<class Alloc>

      function(std::allocator_arg_t,const Alloc& alloc,

               const function& other);
      (library fundamentals TS)
      function(std::allocator_arg_t,const allocator_type& alloc,
               const function& other);
      (library fundamentals TS v3)
      (9)
      template<class Alloc>

      function(std::allocator_arg_t,const Alloc& alloc,

                function&& other);
      (library fundamentals TS)
      function(std::allocator_arg_t,const allocator_type& alloc,
                function&& other);
      (library fundamentals TS v3)
      (10)
      template<class F,class Alloc>
      function(std::allocator_arg_t,const Alloc& alloc, F f);
      (library fundamentals TS)
      function(std::allocator_arg_t,const allocator_type& alloc, F f);
      (library fundamentals TS v3)

      Constructs astd::experimental::function from a variety of sources.

      1,2) Creates anempty function.
      3) Copies thetarget ofother to thetarget of*this. Ifother isempty,*this will beempty after the call too.
      4) Moves thetarget ofother to thetarget of*this. Ifother isempty,*this will beempty after the call too.After construction,*this stores a copy ofother.get_allocator().(library fundamentals TS v3)
      5) Initializes thetarget with a copy off. Iff is a null pointer to function or null pointer to member,*this will beempty after the call. This constructor does not participate in overload resolution unless f isCallable for argument typesArgs... and return typeR.
      6-10) Same as(1-5) except thatalloc is used to allocate memory for any internal data structures that thefunction might use.These constructors treatalloc as a type-erased allocator (see below).(until library fundamentals TS v3)

      After construction via(1-5),this->get_memory_resource() returns the same value asstd::experimental::pmr::get_default_resource() during construction.

      (library fundamentals TS)
      (until library fundamentals TS v3)

      After construction via(1-3) and(5),*this stores a default constructedstd::pmr::polymorphic_allocator<>.

      (library fundamentals TS v3)

      When thetarget is a function pointer or astd::reference_wrapper, small object optimization is guaranteed, that is, these targets are always directly stored inside thestd::experimental::function object, no dynamic allocation takes place. Other large objects may be constructed in dynamic allocated storage and accessed by thestd::experimental::function object through a pointer.

      If a constructor moves or copies a function object, including an instance ofstd::experimental::function, then that move or copy is performed byusing-allocator construction with allocatorthis->get_memory_resource()(until library fundamentals TS v3)this->get_allocator()(library fundamentals TS v3).

      Contents

      [edit] Type-erased allocator

      The constructors offunction taking an allocator argumentalloc treats that argument as a type-erased allocator. The memory resource pointer used byfunction to allocate memory is determined using the allocator argument (if specified) as follows:

      Type ofalloc Value of the memory resource pointer
      Non-existent (no allocator specified at time of construction) The value ofstd::experimental::pmr::get_default_resource() at time of construction.
      std::nullptr_t The value ofstd::experimental::pmr::get_default_resource() at time of construction.
      A pointer type convertible to
      std::experimental::pmr::memory_resource*
      static_cast<std::experimental::pmr::memory_resource*>(alloc)
      A specialization of
      std::experimental::pmr::polymorphic_allocator
      alloc.resource()
      Any other type meeting theAllocator requirements A pointer to a value of typestd::experimental::pmr::resource_adaptor<A>(alloc), whereA is the type ofalloc. The pointer remains valid only for the lifetime of thefunction object.
      None of the above The program is ill-formed.

      [edit]Parameters

      other - the function object used to initialize*this
      f - a callable used to initialize*this
      alloc - an allocator used for internal memory allocation
      Type requirements
      -
      F must meet the requirements ofCallable andCopyConstructible.

      [edit]Exceptions

      3,8) Does not throw ifother'starget is a function pointer or astd::reference_wrapper, otherwise may throwstd::bad_alloc or any exception thrown by the copy constructor of the stored callable object.
      4) (none)
      5,10) Does not throw iff is a function pointer or astd::reference_wrapper, otherwise may throwstd::bad_alloc or any exception thrown by the copy constructor of the stored callable object.
      9) (none)

      [edit]Example

      This section is incomplete
      Reason: no example
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/function/function&oldid=157724"

      [8]ページ先頭

      ©2009-2025 Movatter.jp