Прохождение захвата лямбды в качестве указателя функцииC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Прохождение захвата лямбды в качестве указателя функции

Сообщение Anonymous »

Можно ли пройти функцию лямбды в качестве указателя функции? Если это так, я должен делать что -то неправильно, потому что я получаю ошибку компиляции. < /P>
Рассмотрим следующий пример < /p>

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

using DecisionFn = bool(*)();

class Decide
{
public:
Decide(DecisionFn dec) : _dec{dec} {}
private:
DecisionFn _dec;
};

int main()
{
int x = 5;
Decide greaterThanThree{ [x](){ return x > 3; } };
return 0;
}
< /code>
Когда я пытаюсь скомпилировать это, я получаю следующую ошибку компиляции: < /p>
In function 'int main()':
17:31: error: the value of 'x' is not usable in a constant expression
16:9:  note: 'int x' is not const
17:53: error: no matching function for call to 'Decide::Decide(
)'
17:53: note: candidates are:
9:5:   note: Decide::Decide(DecisionFn)
9:5:   note: no known conversion for argument 1 from 'main()::' to 'DecisionFn {aka bool (*)()}'
6:7:   note: constexpr Decide::Decide(const Decide&)
6:7:   note: no known conversion for argument 1 from 'main()::' to 'const Decide&'
6:7:   note: constexpr Decide::Decide(Decide&&)
6:7:   note: no known conversion for argument 1 from 'main()::' to 'Decide&&'
Это, черт возьми, сообщение об ошибке, но я думаю, что я выхожу из этого, так это то, что лямбда не может рассматриваться как contexpr , поэтому я не могу передать его в виде указателя функции? Я также пытался создать x contexpr, но это, похоже, не помогает.


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

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

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

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

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

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

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