Limitar o fluxo de entrada de dados a valores do tipo int

Olá sou iniciante aqui no GUJ, e peço que se esse tópico não está em conformidade com as regras do GUJ por favor tomem as decisões necessárias.
minha dúvida é em questão a esse código C++ que estou escrevendo, lembrando que sou iniciante em programação.

#include <'iostream>
#include <'limits>

using std::cout;
using std::cin;
using std::endl;

int getVar(int num);
int getInt(int num);

int main(){

int n;
cout<<"Insira um inteiro. \n\n";
getInt(n);


return 0 ;

}
int getInt(int n){

cin>>n;
return getVar(n);

}

int getVar(int num){

if(!(cin>> num &&  !num % 2 == 0)){

    cout<< num <<" Entrada nao corresponde ao tipo de variavel solicitado.\n\n";
    cin.clear();
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    getInt(num);

}
else{
    cin.clear();
    cout<<"\n"<< num <<" Entrada recebida com sucesso!!! \n";
    return num;

    }
}
Obs : Peço perdão pelos apóstrofos nos includes, é porque eles não aparecem quando estão dentro de <> a única forma que encontrei de faze-los aparecer foi essa, quem souber por favor me avise.

O que acontece é que quando digito um numero que é aceito pela função no caso um inteiro, tenho que digita-lo duas vezes para que ele seja captado, eu gostaria que ele captasse a entrada direto na primeira tentativa.

Grato pela colaboração.

Olá amigo já tinha resolvido mas mesmo assim valeu pela resposta.