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