Разница между компиляторами c++1y и gnu c++ 11 4.9

233
11 февраля 2020, 14:50

У меня запускается код с компилятором 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;
}
Answer 1

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. Нужно заменить его на обычный тип.

READ ALSO
Проверка форматирования кода

Проверка форматирования кода

Хочу организовать проверку форматирования кода на стороне ci с помощью clang-format и опции -output-replacements-xmlЗадумка была такая: если файл не отформатирован,...

236
Деструктор класса с полем структуры [закрыт]

Деструктор класса с полем структуры [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»

248
Дистрибутив linux для языков С, С++, Python

Дистрибутив linux для языков С, С++, Python

Хочу расширить свои навыки как программиста в направлении кроссплатформенностиХочу изучить создание приложений на линуксе, использование...

250
Найти Collision в unigine на с++

Найти Collision в unigine на с++

Может быть кто то из вас пользовался unigine для разработкиИнтересует следующий простой вопрос необходимо найти где происходит пересечение...

227