170 похожих чатов

Как лучше хранить указатели на свободные функции и члены классы

чтобы итерироваться по ним? Смотрю на mem_fn но оно только для членов класса, а std::function требует явно указывать сигнатуру (или нет?). Сейчас просто вектор указателей всех функций, хочется отказаться от голых указателей но не пойму как

22 ответов

25 просмотров

Нет ничего плохого в голых указателях на функции, если это указатели на свободные функции. std::function добавляет немного оверхеда. Явно сигнатуру указывать нужно (в общем-то как и в поинтерах)

Max Kolesnikov
Нет ничего плохого в голых указателях на функции, ...

Ключевое слово в предложении про оверхед "немного"

Michael-Chambers Автор вопроса
Max Kolesnikov
Ключевое слово в предложении про оверхед "немного"

Одна лишняя аллокация не изменит мир в моём случае

Michael Chambers
Одна лишняя аллокация не изменит мир в моём случае

Тогда std::function, но я все же считаю что поинтеры для свободных функций - ок

Michael-Chambers Автор вопроса
Max Kolesnikov
Тогда std::function, но я все же считаю что поинте...

У меня мемберы и свободные функции вперемешку

Michael-Chambers Автор вопроса
Max Kolesnikov
Тогда std::function однозначно

А в чем будет принципиальная разница? То что std function спасёт от вызова после смерти this?

Michael Chambers
А в чем будет принципиальная разница? То что std f...

Разница по сравнению с чем? Если там мембер-функции в перемешку со свободными функциями, альтернатив нет

Michael-Chambers Автор вопроса
Max Kolesnikov
Разница по сравнению с чем? Если там мембер-функци...

Сейчас всё кастуется к указателям на члены поэтому альтернативы есть

Michael-Chambers Автор вопроса
Michael Chambers
Я бы не был так уверен)

Мы не будем вспоминать извращённые способы вроде enable_shared_from_this

Dmitriy [Отпуск]
Мы не будем вспоминать извращённые способы вроде e...

К сожалению, это иногда единственный способ, например в asio :)

Max Kolesnikov
К сожалению, это иногда единственный способ, напри...

Ничуть. За всё время использования asio-асинхронщины почти всегда удавалось избегать этой жути.

Michael Chambers
Сейчас всё кастуется к указателям на члены поэтому...

Признаться, никогда указателями на методы не пользовался, разве у них тип не отличается от указателя на голую функцию с той же сигнатурой? Да и синтаксис вызова будет другой, как их можно хранить в одном контейнере?

Michael-Chambers Автор вопроса
Max Kolesnikov
Признаться, никогда указателями на методы не польз...

Отличается тип но у нас есть касты. Поэтому можно

Michael Chambers
Отличается тип но у нас есть касты. Поэтому можно

Ну вот уже некрасиво получается, уже один из плюсов замены на std::function - type erasure до абстрактного функтора

Michael-Chambers Автор вопроса
Max Kolesnikov
Ну вот уже некрасиво получается, уже один из плюсо...

Такой себе плюс чтобы переписывать кучу всего. Хотелось бы узнать есть ли стоящие того преимущества

Michael Chambers
Такой себе плюс чтобы переписывать кучу всего. Хот...

А какие еще могут быть преимущества? У вас просто указатель на функцию, тут никакой магии быть не может Ну и качество кода это немалый плюс имхо)

Michael-Chambers Автор вопроса
Max Kolesnikov
А какие еще могут быть преимущества? У вас просто ...

Универсальный тип, из которого можно получить тип возвращаемого значения, количество аргументов и т.д.

Michael Chambers
Универсальный тип, из которого можно получить тип ...

Ну да, первое это std::function<...>::result_type, остальное в общем-то можно в пару строк сделать простым трейтом, если очень хочется. Само собой и для указателя тоже

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта