How do I deal with the `max` macro in windows.h colliding with `max` in `std`?
===

So I was trying to get valid integer input from cin, and used an answer to this [question][1].

It recommended:

    do
    {
        if(cin.fail())
        {
            cin.clear();
            cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        }
        cout << "Enter number of seconds between submissions: ";
    } while(!(cin >> delay) || delay == 0);

Which gives me an error on Windows, saying that the `max` macro doesn't take that many arguments. Which means I have to do this

    do
    {
        if(cin.fail())
        {
            cin.clear();
    #undef max
            cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        }
        cout << "Enter number of seconds between submissions: ";
    } while(!(cin >> delay) || delay == 0);

To get it to work. That's pretty ugly; is there a better way to work around this issue? Maybe I should be storing the definition of `max` and redefining it afterward?

  [1]: http://stackoverflow.com/questions/5864540/a-simple-question-about-cin/5864560#comment15263994_5864560