'Numeric_limits не был объявлен в этой области, никакая соответствующая функция для вызова' max()

Я скомпилировал этот код дома на моем mac w/xcode и не было никакой ошибки. Я собираю его в школе с g++ на linux, и я получаю следующие ошибки:

: 'numeric_limits не является членом std
: ожидаемое первичное выражение перед токеном → : нет соответствующей функции для вызова 'max()

#include <iostream>
#include <cstdlib>

using namespace std;

int GetIntegerInput(int lower, int upper)
{
    int integer = -1;
    do
    {    
        cin >> integer;
        cin.clear();
        cin.ignore(std::numeric_limits<streamsize>::max(), '\n');  //errors here
    }while (integer < lower || integer > upper);

    return integer;    
} 

Я собираюсь, возможно, включить дополнительный заголовок. Если я заберу std:: он просто дает мне аналогичную ошибку

'numeric_limits не было объявлено в этой области

Ответы

Ответ 1

Вам нужно указать заголовочный файл <limits>, где указано std::numeric_limits. Ваш Mac-компилятор помог вам автоматически включить этот заголовочный файл; однако вы не должны полагаться на это поведение и явно включать любые файлы заголовков, которые вам нужны.