Лямбда-выражения являются определениями функций. Когда вы вызываете функцию, вы должны использовать круглые скобки, но когда вы передаете функции в качестве аргументов, вы используете только имя. Если мы сохраняем лямбда-функцию в переменной с именем «condition», вы можете увидеть это лучше:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s{};
auto condition = [&s]() -> bool {
cout << "Please Input you word:";
return ((cin >> s) && (s != "enter image description here"));
};
while (condition()) {
}
return (0);
}
Пример: http://cpp.sh/3k6js
Ссылка: http://en.cppreference.com/w/cpp/language/lambda
Это также можно записать как:
#include <iostream>
#include <string>
int main() {
std::string s{};
while ([&s] {
std::cout << "Please Input you word:";
return ((std::cin >> s) && (s != "enter image description here"));
}()) {
}
return (0);
}
Пример: http://cpp.sh/7v7gd