#include <iostream>
template<class T>
struct Widget{
void Func() {
std::cout<<"generic func"<<std::endl;
}
};
// 成员函数全特化可以
template<>
void Widget<char>::Func(){
std::cout<<"spectial"<<std::endl;
}
void Test(){
Widget<int> w;
w.Func();
Widget<char> c;
c.Func();
}
template<class T, class U>
struct Target{
void Func(){
std::cout<<"generic func"<<std::endl;
}
};
// 成员函数偏特化失败,不支持
template<class T>
void Target<T, int>::Func(){
std::cout<<"spectial"<<std::endl;
}
/// 函数模板偏特化demo, 一个模板参数可以(可以全特化),多个模板参数失败(偏特化不支持)
template <typename A>
void f(A a) {
std::cout << "Normal version." << std::endl;
}
template <>
void f<int>(int a) {
std::cout << "Partial version." << std::endl;
}
int main() {
Test();
return 0;
}
C++ 函数偏特化
最新推荐文章于 2025-04-24 19:33:19 发布
本文探讨了C++中的模板特化,展示了如何为`Widget`类的`char`类型成员函数进行全特化。同时,通过示例解释了C++不支持函数模板偏特化的事实,并提供了函数模板全特化的示例。
433

被折叠的 条评论
为什么被折叠?



