Função para verificar se a string contém um número

Estou trabalhando em um projeto em c ++ (que acabei de começar a aprender) e não consigo entender por que essa função não está funcionando. Estou tentando escrever uma classe "Person" com uma variável first_name e usar a função set_first_name para definir o nome. Set_first_name precisa chamar uma função (a abaixo) para verificar se o nome possui algum número. A função sempre retorna false, e eu estou me perguntando por que? Além disso, esta é a melhor maneira de procurar números ou existe uma maneira melhor?

   bool Person::contains_number(std::string c){ // checks if a string contains a number
        if (c.find('0') == std::string::npos || c.find('1') == std::string::npos || c.find('2') == std::string::npos || c.find('3') == std::string::npos
        || c.find('4') == std::string::npos || c.find('5') == std::string::npos || c.find('6') == std::string::npos || c.find('7') == std::string::npos
        || c.find('8') == std::string::npos || c.find('9') == std::string::npos){// checks if it contains number

        return false;
        }
        return true;
    }