🔥 Разбираемся с std::invoke в C++ 🔥 Сегодня разберём...
🔥 Разбираемся с std::invoke в C++ 🔥
Сегодня разберём мощный инструмент из стандартной библиотеки — std::invoke. Многие его игнорируют, но он может упростить вызов функций и методов, особенно в шаблонном коде.
📌 Что такое std::invoke?
std::invoke — это универсальный механизм вызова вызываемых объектов (callable). Он может вызывать:
✅ Обычные функции
✅ Лямбды
✅ Функторы
✅ Указатели на методы и данные
🔹 Пример использования:
#include
#include
struct Foo {
void method(int x) {
std::cout « "Method called with " « x « '\n';
}
};
void function(int x) {
std::cout « "Function called with " « x « '\n';
}
int main() {
Foo foo;
// Вызов обычной функции
std::invoke(function, 42);
// Вызов метода класса через объект
std::invoke(&Foo::method, foo, 24);
// Вызов метода через указатель на объект
Foo* ptr = &foo;
std::invoke(&Foo::method, ptr, 77);
return 0;
}
🔥 Чем std::invoke полезен?
✅ Универсальность: избавляет от необходимости писать отдельные if constexpr для разных callable объектов.
✅ Чистый код: особенно полезен в шаблонных алгоритмах, где callable передаётся как параметр.
👉 [club79831840|@Bookflow]