为什么这不起作用?
#include <vector>
struct A {
template <typename T> void f(const std::vector<T> &) {}
};
int main() {
A a;
a.f({ 1, 2, 3 });
}
答案 0 :(得分:13)
你可以使用列表初始化初始化std::vector<T>
。但是,您不能使用参数列表中的T
推断模板参数std::vector<T>
,并将函数传递给非std::vector<T>
的函数。例如,这有效:
#include <vector>
template <typename T>
struct A {
void f(const std::vector<T> &) {}
};
int main() {
A<int> a;
a.f({ 1, 2, 3 });
}