Udostępnij za pośrednictwem


function::function

Konstrukcje otoki, która jest pusty lub przechowuje wpłacone obiektu dowolnego typu z podpisem stałych.

function();
function(nullptr_t npc);
function(const function& _Right);
template<class Fx>
   function(Fx _Func);
template<class Fx>
    function(reference_wrapper<Fx> _Fnref);
template<class Fx, class Alloc>
    function(
        Fx _Func, 
        const Alloc& _Ax
);
template<class Fx, class Alloc>
    function(
        reference_wrapper<Fx> _Fnref, 
        const Alloc& _Ax
    );

Parametry

  • _Right
    Funkcja obiekt do skopiowania.

  • FX
    Typ obiektu wpłacone.

  • _Func
    Wpłacone obiektu zawijany.

  • Alokacja
    Typ programu przydzielania.

  • _Ax
    Program przydzielania.

  • _Fnref
    Odwołanie do obiektu wpłacone do zawijania.

Uwagi

Dwa pierwsze konstruktory skonstruować pusty function obiektu.Konstruktory trzech kolejnych skonstruować function obiekt, który przechowuje wpłacone obiektu przekazane jako argument.Dwa ostatnie konstruktory przydzielić program przydzielania pamięci masowej obiektu _Ax.

Przykład

 

// std_tr1__functional__function_function.cpp 
// compile with: /EHsc 
#include <functional> 
#include <iostream> 
#include <vector>
 
int square(int val)
{
    return val * val;
}

class multiply_by
{
public:
    explicit multiply_by(const int n) : m_n(n) { }

    int operator()(const int x) const
    {
        return m_n * x;
    }

private:
    int m_n;
};


int main() 
{ 

    typedef std::vector< std::function<int (int)> > vf_t;

    vf_t v;
    v.push_back(square);
    v.push_back(std::negate<int>());
    v.push_back(multiply_by(3));

    for (vf_t::const_iterator i = v.begin(); i != v.end(); ++i)
    {
        std::cout << (*i)(10) << std::endl;
    }

    std::function<int (int)> f = v[0];
    std::function<int (int)> g;

    if (f) {
        std::cout << "f is non-empty (correct)." << std::endl;
    } else {
        std::cout << "f is empty (can't happen)." << std::endl;
    }
 
    if (g) {
        std::cout << "g is non-empty (can't happen)." << std::endl;
    } else {
        std::cout << "g is empty (correct)." << std::endl;
    }

    return 0; 
}
  
  

Wymagania

Nagłówek: <functional>

Obszar nazw: std

Zobacz też

Informacje

function Class

function::operator=

Lvalues i Rvalues