I generally agree with ApochPiQ, except I am happy to have code like this:int x; std::cin >> x;
I would much rather not give x a value that will never be used. Notice that I declare x as late as possible, so it's trivial to verify that it will always be assigned a value.
If your going to do that, then I would suggest something like this:
int x = get<int>();
where get<int>() should be a template function that has proper error handling and all that extra stuff