function::function
Konstrukcje otoki, która jest pusta lub przechowuje nieopłacona obiektu dowolnego typu za pomocą środka podpisu.
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 przeznaczony do skopiowania.FX
Typ obiektu wpłacone._Func
Wpłacone obiekt oblewania.Alokacji
Typ programu przydzielania._Ax
Alokator._Fnref
Odwołanie do obiektu wpłacone na zawijanie.
Uwagi
Pierwsze dwa konstruktory skonstruować pustą function obiektu.Kolejne trzy konstruktorów skonstruować function obiekt, który przechowuje nieopłacona obiektu jest przekazywana jako argument.Ostatnie dwa konstruktory przydzielić pamięci masowej z programu przydzielania 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>
Przestrzeń nazw: std