参考实现:
template <typename T>
struct is_template : std::false_type {};
template <template <typename...> class C, typename... Ts>
struct is_template<C<Ts...>> : std::true_type {};
template <typename T>
struct template_type : std::false_type {
using value_type = T;
};
template <template <typename> class C, typename T>
struct template_type<C<T>> : std::true_type {
using value_type = T;
};
用途举例:
std::vector<int> is 模板
int is 不是模板