Vector.push_back (std :: function ); путь вокруг компилятора, запрашивающего выражение - PullRequest
0 голосов
/ 05 августа 2020

Если я напишу:

Vector.push_back (std :: function );

Компилятор пытается интерпретировать это как выражение и терпит неудачу .. Мой путь был:

std::function<void()> fun;
Vector.push_back(fun);

Есть ли способ исправить это в одной строке?

1 Ответ

5 голосов
/ 05 августа 2020

По той же причине:

std::vector<int> vec;
vec.push_back(int);

не работает. Вам нужен объект, а не тип:

std::vector<int> vec;
vec.push_back(int{}); // notice the {}

Точно так же ваш:

Vector.push_back(std::function<void()>);

Пытается создать sh тип, а не объект. Создайте так же:

Vector.push_back(std::function<void()>{}); // notice the {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...