Проблемы с выводом типа шаблона с помощью аргумента C++ std::function [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с выводом типа шаблона с помощью аргумента C++ std::function [дубликат]

Сообщение Anonymous »


В C++20 я пытаюсь передать объект функции, указатель или лямбда-выражение, в шаблонную функцию, которая принимает std::function. Мне нужно знать, каковы типы аргументов и возвращаемых значений объектов функции, чтобы они были частью сигнатуры шаблона. Я могу заставить его работать для функции, принимающей указатель на функцию, но не для функции, принимающей std::function. Я не могу понять, что я делаю неправильно и возможно ли то, что я делаю. Код, который дает сбой:...

#include шаблон auto setFuncPtr(RET fn(const ARG1&)) -> void { } шаблон auto setStdFunc(const std::function &fn) -> void { } auto func(const int &i) -> int { вернуть я; } int main(int argc, char *argv[]) { setFuncPtr(функ); //< все хорошо setStdFunc (функ); //< компиляция не удалась setStdFunc(func); //< буду рад, если форсирую типы setStdFunc([](const int &i) -> int { return i;}); //< компиляция не удалась } Соберите 17 борков со следующим...

:21:5: ошибка: нет соответствующей функции для вызова setStdFunc 21 | setStdFunc (функ); //< компиляция не удалась | ^~~~~~~~~~ :9:6: примечание: шаблон-кандидат игнорируется: не удалось сопоставить «std::function» с «auto (const int &) -> int» 9 | auto setStdFunc(const std::function &fn) -> void | ^ :23:5: ошибка: нет соответствующей функции для вызова setStdFunc 23 | setStdFunc([](const int &i) -> int { return i;}); //< компиляция не удалась | ^~~~~~~~~~ :9:6: примечание: шаблон-кандидат игнорируется: не удалось сопоставить «std::function» с «(лямбда в :23:16)» 9 | auto setStdFunc(const std::function &fn) -> void | ^ Возникло 2 ошибки. Компилятор вернул: 1 Ссылка на бога
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка: нет типа с именем «type» в «классе std::result_of<std::function<int(std::pair<int, int>&)>(std::pair<int, int>)>
    Anonymous » » в форуме C++
    0 Ответы
    172 Просмотры
    Последнее сообщение Anonymous
  • Основы функции - Function Function Function, пройдя в INTS больше 99
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Основы функции - Function Function Function, выходящая из INT, более 99 [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • C# Async Function Function Function
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Приложение Function Function Function не может найти функцию на AWS Lambda
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»