Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.73.187] |
|
Страницы: (3) 1 2 [3] все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
Цитата Serpentus @ И так, и сяк. Двоичный код при вызове std::function идентичен коду при вызове того, чем он проинициализирован. Это ожидаемо, потому что std::function копирует внутрь себя объект, которым инициализируется, после что вызывает эту копию. (Под вызовом я имею в виду вызов "operator ()"). Т.е. это надо выделить память, вызвать для неё конструктор и сохранить где-то ссылки на деструктор и оператор(), так наверное? |
Сообщ.
#32
,
|
|
|
Flex Ferrum
ИМХО в случае простого указателя на функцию код все равно будет одним и тем же: "положить" параметры, загрузить в регистр адрес функции (не важно, переменная-указатель это или числовой литерал) и совершить переход. Для функциональных объектов - не знаю, возможно. Но я не проверял, так что утверждать не берусь. Олег М Так, но это на создание/удаление. А на вызов оверхед нулевой. |
Сообщ.
#33
,
|
|
|
Цитата Serpentus @ Так, но это на создание/удаление. А на вызов оверхед нулевой. В смысле, нулевой? Я так понимаю - нулевой, это когда inline. А здесь будет вызов обычного метода. |
Сообщ.
#34
,
|
|
|
Олег М
В смысле по сравнению с вызовом того, чем проинициализировали std::function. |
Сообщ.
#35
,
|
|
|
Цитата Serpentus @ В смысле по сравнению с вызовом того, чем проинициализировали std::function. Ну да, так и должно быть. Тут вот тоже интересно - как в bind эти placeholders разруливаются, ещё одно tuple строится, со ссылками? Или как-то по-другому? |