سلام؛ زبان سیپلاسپلاس یک زبان Static type هست، برای اینکه بتونید توی Runtime نوع یک نوع یا نوعی که متغیر ازش استفاده میکنه رو بررسی کنید میتونید از decltype یا typeid استفاده کنید (امّا تغییر نمیتونید بدید). روشهایی وجود داره که در زمان Compile به شما خطا بده که دارید از Type درستی برای عملیات مورد نظرتون استفاده میکنید یا نه. مثلاً داخل Templateها میتونید با استفاده از std::enable_if و Type traitsها میتونید نوع رو تا حد خوبی تشخیص بدید مثلاً:
template <typename C,
typename T,
typename =
std::enable_if_t<
std::is_same_v<
std::decay_t<T>, std::vector<C>>>>
void function(const T input)
{
std::clog << input.size() << std::endl;
}
int main()
{
std::vector<size_t> vec_1;
function<size_t>(vec_1);
return 0;
}