#include<iostream>
using namespace std;
template<typename T ,void (*f)(T& v)>
void foreach_0(T arr[], unsigned size)
{
for (size_t i = 0; i < size; i++)
{
f(arr[i]);
}
}
template<typename T>
void print(T& v)
{
cout << " " << v << " ";
}
//模板型模板函数
template<template<typename TT> struct Func,typename T >
void foreach_1(T arr[], unsigned size)
{
Func<T> func;
for (size_t i = 0; i < size; ++i)
{
func(arr[i]);
}
}
template<typename T>
struct print_1
{
public:
void operator(T& v) const
{
cout << " *" << v << " ";
}
};
int main()
{
//①
int arr[] = { 1,2,3,4,5,6,7,8 };
foreach_0<int, print<int> > (arr, 8);
//②
foreach_1<print_1>(arr, 8);
cin.get();
return 0;
}
模板型模板参数报错,无法调试通过,---《深入实践c++模板》例子
最新推荐文章于 2024-06-24 10:45:30 发布