Отметьте пост . Они предоставляют способ проверить, является ли что-то специализацией шаблонного класса:
template<typename Test, template<typename...> class Ref>
struct is_specialization : std::false_type {};
template<template<typename...> class Ref, typename... Args>
struct is_specialization<Ref<Args...>, Ref>: std::true_type {};
И, вероятно, сделайте что-то подобное, чтобы сохранить ваш оригинальный интерфейс:
template <typename Container1, typename Container2>
constexpr bool CheckTypes(Container1 c1, Container2 c2) {
return is_specialization<Container1, std::vector>::value && is_specialization<Container2, std::vector>::value;
}
Так что вы можете сделать что-то вроде этого:
int main() {
std::vector<int> v1(100,0);
std::vector<double> v2(100,0);
std::cout << CheckTypes(v1,v2);
return 0;
}