Spec-Zone.ru › C++

std::function<R(Args...)>::operator()

R operator()( Args... args ) const;
(since C++11)

Вызывает сохранённую вызываемую функцию-цель с параметрами args.

Эффективно выполняет INVOKE<R>(f, std::forward<Args>(args)...), где f — целевой объект *this.

Параметры

args - параметры для передачи сохранённой вызываемой функции-цели

Значение результата

None, если R — void. В противном случае — значение результата вызова сохранённого вызываемого объекта.

Исключения

Выбрасывает std::bad_function_call, если *this не хранит вызываемую функцию-цель, т.е. !*this == true.

Пример

В следующем примере показано, как std::function может быть передана другим функциям по значению. Также показано, как std::function может хранить лямбда-выражения.

#include <functional>
#include <iostream>
 
void call(std::function<int()> f) // can be passed by value
{ 
    std::cout << f() << '\n';
}
 
int normal_function()
{
    return 42;
}
 
int main()
{
    int n = 1;
    std::function<int()> f = [&n](){ return n; };
    call(f);
 
    n = 2;
    call(f);
 
    f = normal_function;
    call(f);
}

Вывод:

1
2
42

См. также

operator()
(C++23)
вызывает целевой
(публичный член-функции std::move_only_function)
operator()
вызывает сохранённую функцию
(публичный член-функции std::reference_wrapper<T>)
bad_function_call
(C++11)
исключение, выбрасываемое при вызове пустого std::function
(класс)
invokeinvoke_r
(C++17)(C++23)
вызывает любой объект Callable с заданными аргументами и возможностью указать тип возвращаемого значения(с C++23)
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/function/operator()

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API