Вы не можете сделать это точно, но немного больше работы вы можете сделать что-то подобное. Следующий код работает, если у вас установлены библиотеки Boost. Это может быть сделано без повышения, но это утомительно.
#include <boost/lexical_cast.hpp>
main() {
std::string val;
std::cout << "Value: " << std::endl;
std::cin >> val;
try {
int i = boost::lexical_cast<int>(val);
std::cout << "It's an integer: " << i << std::endl;
}
catch (boost::bad_lexical_cast &blc) {
std::cout << "It's not an integer" << std::endl;
}
}