Parse strings and respond
Don't write long lines.

The reason Loki Astari didn't comment on

bool allUpper = std::all_of(s.begin() , s.end() , [](char ch){ if(std::isupper(ch) || !std::isalpha(ch)) return true; else return false; });


is that it is too long. Written properly as

bool allUpper = std::all_of(s.begin() , s.end() ,
    [](char ch){
        if(std::isupper(ch) || !std::isalpha(ch))
            return true; 
        else 
            return false;
    });


it'd prompt for another advice:

    if (condition)
        return true;
    else
        return false;


is a standard anti-pattern: it is equivalent to short and clean

    return condition;