System::Func class

Func class

Делегат функции. Этот тип должен быть выделен в стеке и передаваться в функции по значению или по ссылке. Никогда не используйте класс System::SmartPtr для управления объектами этого типа.

template<typename...>class Func : public System::MulticastDelegate<::System::Detail::FuncArgsReorderer<void(), Args...>::type>
ПараметрОписание
АргументыАргументы вызова, затем обязательный тип возвращаемого значения.

Методы

МетодОписание
Func()Конструктор по умолчанию, создающий null‑Func.
Func(T&&)Конструктор, который создает объект Func и присваивает ему значение (либо реальный обратный вызов, либо nullptr).
Func(const Func&)Конструктор копирования.
Func(Func&&)Конструктор перемещения.
operator=(const Func&)Копирующее присваивание.
operator=(Func&&)Перемещающее присваивание.
~Func()Деструктор.

Примечания

#include "system/func.h"
#include <iostream>

// Эта функция принимает в качестве параметра экземпляр делегата System::Func.
void Print(int x, const System::Func<int, int> &func)
{
  std::cout << func(x) << std::endl;
}

int main()
{
  // Создайте экземпляр делегата System::Func.
  auto func = static_cast<System::Func<int, int>>([](int x) -> int
  {
    return x * x;
  });

  // Передайте созданный экземпляр в качестве аргумента функции.
  Print(1, func);
  Print(2, func);
  Print(3, func);

  return 0;
}
/*
This code example produces the following output:
1
4
9
*/

См. также