#include <iostream>
#include <vector>
#include <type_traits>
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;
};
template <typename T>
struct A {};
template <typename T>
void func(T a) {
std::cout << "T::value_type is " << typeid(template_type<T>::value_type).name() << std::endl;
if constexpr (template_type<T>::value) {
std::cout << "T is a template type" << std::endl;
}
else {
std::cout << "T is not a template type" << std::endl;
}
}
int main() {
func(A<int>{});
func(int{});
return 0;
}
C++ 推导模板 template <typename T> , T的类型,std::vector<int>,推导出 int 类型。
最新推荐文章于 2024-03-26 18:09:08 发布