#include <iostream>
#include <type_traits>
#include <string>
template<typename T>
void checkType() {
if (std::is_same<T, int>::value) {
std::cout << "T is an int" << std::endl;
} else if (std::is_same<T, double>::value) {
std::cout << "T is a double" << std::endl;
} else if (std::is_same<T, std::string>::value) {
std::cout << "T is a std::string" << std::endl;
} else {
std::cout << "T is some other type" << std::endl;
}
}
int main() {
checkType<int>();
checkType<double>();
checkType<std::string>();
checkType<float>();
return 0;
}