Partager via


function::function

Crée un wrapper qui est vide ou stocke un objet appelé de type arbitraire avec une signature fixe.

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
    );

Paramètres

  • _Right
    L'objet de fonction d'impression.

  • Fx
    Le type de l'objet appelé.

  • _Func
    L'objet peut être appelé à l'enveloppe.

  • Alloc
    Le type de l'allocateur.

  • _Ax
    l'allocateur.

  • _Fnref
    La référence d'objet peut être appelé à l'enveloppe.

Notes

Les deux premiers constructeurs construisent un objet vide d' function .Les trois constructeurs suivants construisent un objet d' function qui juge l'objet appelé passé comme opérande.Les deux derniers constructeurs allouent la mémoire avec le _Ax d'objet d'allocation.

Exemple

 

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

Configuration requise

en-tête : <functional>

l'espace de noms : DST

Voir aussi

Référence

function Class

function::operator=

Lvalues et Rvalues