loops std :: cin, mesmo que eu chame ignore () e clear ()

Estou tentando configurar um loop de verificação de entrada para que ele solicite continuamente ao usuário uma entrada (inteira) válida, mas parece que ele fica preso em um loop infinito.

Eu procurei soluções e tenteiignore() eclear(), mas ainda não para.

Poderia, por favor, me corrigir onde estou errado aqui?

int num;
cin >> num;
while (cin.fail()) {
  cin.ignore();
  cin.clear();
  cout << "Enter valid number: " << endl;
  cin >> num;
}

questionAnswers(2)

yourAnswerToTheQuestion