У меня запускается код с компилятором gnu++1y, но при использовании gnu c++ 11 4.9 выдает ошибку
warning: use of ‘auto’ in lambda parameter declaration only available with -std=c++1y or -std=gnu++1y
int unique = std::count_if(Mass.cbegin(), Mass.cend(), [](auto pair) { return pair.second == 1; });
Как ее исправить? Код:
#include <bits/stdc++.h>
int main()
{
std::map<std::size_t, uint> Mass;
std::string slovo;
std::hash<std::string> hash_fn;
int n;
std::cin >> n;
for (int i = 0; i < n; i++)
{
std::cin >> slovo;
Mass[hash_fn(slovo)] += 1;
}
int unique = std::count_if(Mass.cbegin(), Mass.cend(), [](auto pair) { return pair.second == 1; });
std::cout << unique << std::endl;
}
gnu++1y и gnu c++ 11 4.9 - не компиляторы. Это режимы компиляции.
gnu c++ 11 4.9 - стандарт C++11, с расширениями GNU, на компиляторе GCC 4.9.
gnu++1y - стандарт C++1y (недоделанный C++14), с расширениями GNU, скорее всего тоже на GCC.
use of ‘auto’ in lambda parameter declaration only available with -std=c++1y or -std=gnu++1y
Написано, что писать auto в параметрах лямбд можно только начиная с C++1y/C++14. Нужно заменить его на обычный тип.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей