На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> Аналог std::function , Реализация класса типа std::function, с movable-параметрами
    Цитата Serpentus @
    И так, и сяк. Двоичный код при вызове std::function идентичен коду при вызове того, чем он проинициализирован. Это ожидаемо, потому что std::function копирует внутрь себя объект, которым инициализируется, после что вызывает эту копию. (Под вызовом я имею в виду вызов "operator ()").

    Т.е. это надо выделить память, вызвать для неё конструктор и сохранить где-то ссылки на деструктор и оператор(), так наверное?
      Flex Ferrum
      ИМХО в случае простого указателя на функцию код все равно будет одним и тем же: "положить" параметры, загрузить в регистр адрес функции (не важно, переменная-указатель это или числовой литерал) и совершить переход. Для функциональных объектов - не знаю, возможно. Но я не проверял, так что утверждать не берусь.

      Олег М
      Так, но это на создание/удаление. А на вызов оверхед нулевой.
        Цитата Serpentus @
        Так, но это на создание/удаление. А на вызов оверхед нулевой.

        В смысле, нулевой? Я так понимаю - нулевой, это когда inline. А здесь будет вызов обычного метода.
          Олег М
          В смысле по сравнению с вызовом того, чем проинициализировали std::function.
            Цитата Serpentus @
            В смысле по сравнению с вызовом того, чем проинициализировали std::function.

            Ну да, так и должно быть.
            Тут вот тоже интересно - как в bind эти placeholders разруливаются, ещё одно tuple строится, со ссылками? Или как-то по-другому?
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:
            Страницы: (3) 1 2 [3]  все


            Рейтинг@Mail.ru
            [ Script execution time: 0,0276 ]   [ 17 queries used ]   [ Generated: 20.04.24, 00:06 GMT ]