Зачем нам std::invoke
, когда у нас уже есть std::function
? В чем разница между ними? Оба используются для вызова вызываемых объектов. Какой смысл добавлять новый шаблон?В чем разница между std :: invoke и std :: function?
2
A
ответ
8
std::invoke
является универсальным способом активировать любой вызываемая - это std::function
, указатель на функцию, указатель на функцию-член, функции объекта и т.д. Без того, чтобы знать, какой из них вы имеете дело с (и без используйте другой синтаксис). Это в основном полезно в общем программировании (шаблоны).
Стандартная функция, с другой стороны, является общим контейнером для вызываемой «вещи». Совсем нет.
У нас уже есть машина. Зачем нам нужен зеленый цвет? (Короче говоря, каким образом эти две вещи ** аналогичны ** ???) – Yakk
'std :: invoke' и' std :: function' не делают то же самое вообще – David
Смотрите этот [cppcon 2015 talk by Stephan T. Lavavej] (https://www.youtube.com/watch?v=zt7ThwVfap0) – NathanOliver