【发布时间】:2021-11-11 16:24:31
【问题描述】:
看看这个:
#include <vector>
#include <iostream>
template<class T>
std::vector<T> vec{};
int main() {
vec<short>.push_back(5);
vec<int>.push_back(10);
vec<long int>.push_back(15);
}
vec 变量是模板化的,但不知道发生了哪些可能的实例化。在这种情况下,很明显:short、int 和 long。但是更复杂的情况呢?如何跟踪模板实例化?
我的目标是能够遍历所有vec 实例。类似的东西
for (std::any element : vec) {
delete element; // Or any common logic the types might have (can guarantee with concepts)
}
【问题讨论】:
-
"vec 变量是模板化的" 不,您有一个实例化变量s 的模板。
vec不是变量。vec<int>是与vec<short>不同的变量。 -
@Caleth 请编辑问题
-
删除不是整数通用的操作。
-
没有所有类型通用的操作
-
@eerorika 对于
vec可能持有的内容没有任何限制。这是伪代码。