代码namespace std { template <typename T> void swap<Widget<T>>(Widget<T> &a, Widget<T> &b){ a.swap(b); }; };是否正确
时间: 2023-11-28 08:49:30 浏览: 60
cpp代码-模板 泛型 template<typename> template<class>
不完全正确。应该使用`template <>`显式特化,如下所示:
```
namespace std {
template <typename T>
void swap(Widget<T> &a, Widget<T> &b){
a.swap(b);
};
template <>
void swap<Widget<int>>(Widget<int> &a, Widget<int> &b){
a.swap(b);
};
};
```
在这个例子中,我们特化了`std::swap`函数的模板参数,以便将其应用于`Widget<int>`类型的对象。注意,这个特化必须在命名空间`std`中进行,因为它是一个标准库函数的特化。
阅读全文