Sdílet prostřednictvím


function::function

Konstrukce obalu, který je prázdný nebo uloží callable objekt libovolného typu s pevnou podpis.

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
    Objekt funkce Kopírovat.

  • FX
    Typ callable objektu.

  • _Func
    Callable objektu obtékat.

  • ALLOC
    Typ přidělování.

  • _Ax
    Přidělování.

  • _Fnref
    Odkaz na objekt callable zalomení.

Poznámky

První dvě konstruktory vytvořit prázdnou function objektu.Další tři konstruktory konstrukce function objekt objektem callable předán jako operand.Poslední dvě konstruktory alokování paměti pomocí přidělujícího modulu objektu _Ax.

Příklad

 

// 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; 
}
  
  

Požadavky

Záhlaví: <functional>

Obor názvů: std

Viz také

Referenční dokumentace

function Class

function::operator=

Lvalues a Rvalues