Проблемы с выводом типа шаблона с помощью аргумента C++ std::function [дубликат] ⇐ C++
Проблемы с выводом типа шаблона с помощью аргумента C++ std::function [дубликат]
В 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 Ссылка на бога
В 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 Ссылка на бога
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Основы функции - Function Function Function, выходящая из INT, более 99 [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Приложение Function Function Function не может найти функцию на AWS Lambda
Anonymous » » в форуме JAVA - 0 Ответы
- 1 Просмотры
-
Последнее сообщение Anonymous
-