C++ - 按模板化类进行模板专用化
C++ - Template specialization by templated class
我有一个模板化类,我需要为同样模板化的类专门化一些方法。更具体地说:我尝试将智能数组和共享指针结合起来:
template <class T>
int sortedArray< smartPtr<T> >::insert(const T& object) {
...
}
使用此语法,我收到以下错误:
main.cpp:162:55: error: invalid use of incomplete type ‘class sortedArray<smartPtr<T> >’
int sortedArray< smartPtr<T> >::insert(const T& object) {
^
main.cpp:87:7: error: declaration of ‘class sortedArray<smartPtr<T> >’
class sortedArray {
^
甚至有可能做这种事情吗?
您可以部分专用化整个类模板:
template <typename T>
struct sortedArray<smartPtr<T>> {
void insert(const smartPtr<T>& object) {
....
}
// everything else
};
或者,您可以明确地专用化单个方法:
可以为函数模板、类模板、类模板的成员或成员模板声明显式专用化。
如:
template <>
void sortedArray<smartPtr<int>>::insert(const smartPtr<int>& object) {
...
}
但是,您不能仅部分地专门化一种方法。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 模板专用化(按容器):value_type
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- C++:部分模板专用化用例
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 为什么依赖模板类型在部分专用化中不可推导?
- 如何为静态常量模板化专用整数值分配存储
- 模板类的部分模板专用化,如 std::function
- 合并一组模板专用化