Sdílet prostřednictvím


function::function

Obálka je prázdný nebo ukládá callable objektu libovolného typu s podpisem pevné konstrukce.

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írování.

  • FX
    Typ callable objektu.

  • _Func
    Callable objektu obtékat.

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

  • _Ax
    Alokátor.

  • _Fnref
    Odkaz na objekt callable obtékání textu.

Poznámky

První dva konstruktory vytvořit prázdnou function objektu.Další tři konstruktory vytvořit function objekt, který obsahuje callable objekt předán jako operand.Poslední dva konstruktory přidělit úložiště 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 – třída

function::operator=

Hodnoty Lvalue a Rvalue