【发布时间】:2021-01-28 21:25:43
【问题描述】:
我有一个类A,它是一个模板,如果该类是std::vector<T> 和T 泛型,我想专门化方法foo(),我收到错误:无效使用不完整类型.我想避免为所有可能的向量编写所有特化。
#include <iostream>
#include <vector>
template<typename V>
struct A {
void foo() {
std::cout << "A<V>\n";
}
};
template<typename T>
void A<std::vector<T>>::foo() {
std::cout << "A<V<T>>\n";
}
int main() {
C<int> a;
C<std::vector<int>> b;
return 0;
}
【问题讨论】:
-
您可以将整个类专门化为向量,或者使用 SFINAE 专门化函数本身
标签: c++ templates c++20 template-specialization template-templates