Лямбда-выражение с лямбда-представителем не компилируется [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Лямбда-выражение с лямбда-представителем не компилируется [дубликат]

Сообщение Anonymous »

Я читаю «Принципы и практика программирования» Страуструпа. В главе 15.5 он использует код с лямбда-представителем. Ниже приведена упрощенная версия его кода. Компилятор, похоже, принимает функцию s1 и функцию s2, но застревает на функции s3.

Код: Выделить всё

#include 

typedef double Fct(double);

struct Function {
Function(Fct f) {}
};

double expe(double x, int n)        // sum of n terms for x
{
double sum = 0;
for (int i = 0; i < n; ++i) sum += pow(x, i);
return sum;
}

int main()
{
Function s1{ exp };
Function s2{ [](double x) { return cos(x); } };
for (int n = 0; n < 10; ++n)
Function s3{ [n](double x) { return expe(x,n); } };
}

Компилятор выдает следующие ошибки:
Код серьезности Описание Состояние подавления строки файла проекта
Ошибка (активная) E0289 нет экземпляра конструктора «Function::Function» соответствует списку аргументов X15test X15test.cpp 21
Код серьезности Описание Состояние подавления строки файла проекта
Ошибка C2440 «инициализация»: невозможно преобразовать из «список инициализаторов» в «Функция» X15test X15test.cpp 21
Я пробовал компилировать с помощью C++ 14, 17 и 20, все с одинаковыми результатами. Я компилирую с помощью Visual Studio 2022.

Подробнее здесь: https://stackoverflow.com/questions/783 ... nt-compile
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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