Сама функция - не станет, очевидно. Функция от такого никоем образом не изменится А вот то, что возвращается из std::bind, вообще говоря, unspecified. Хотя почти всегда (а может и всегда) будет возвращен действительно функтор Другой вопрос, а к чему такие фокусы?
В функцию принимается функтор, поэтому функцию надо обернуть либо в std::bind(func) либо лямбду.
Это как так? Объект (произвольный в общем случае) с оператором скобочек принимается, а обычная функция - нет? template<typename F> void foo(F&& func) Там же ведь что-то вроде этого небось. Функцию сюда можно передать вполне
Функция не является функтором?..
Я пару часов назад тот же вопрос задал тут.
Хз что там внутри. У меня го ту дифинишн упирается в стену. Вообще вы правы. Функция оказалось оборачивалась потому что сигнатуре просто не соответствовала.
Ну, по определению, функтором принято называть объект класса, с определенным функциональным оператором. Так что функция не является функтором, следуя этому определению
Еще я вчера задавал вопрос о том как передать таким образом шаблон функции. Оказалось никак. Только функтор с шаблонным оператором https://godbolt.org/z/GffdWqcso
Шаблон функции или уже инстанциацию этого шаблона? Шаблон функции понятное дело никак не передашь, это даже никакой не callable
Шаблон функции не является объектом, функцией или чем либо ещё
То есть если я хочу шаблонный коллабл передать, то оборачивать в функтор с шаблонным оператором () или обобщенную лямбду ?
Как же. В моем примере же работает
В твоем первом примере уже инстанцированная функция с конкретные шаблонными аргументами, это callable объект, а во втором случае нет, кстати с wrapper2 не компилируется код
Шаблон функции не является функцией, и функтором так же. То есть передавать нечего
Обсуждают сегодня