template<typename T>
class Foo {
template<???>
Foo(Container<T> c) {
}
};
...
//this can't be changed
std::vector<int> vec;
Foo<int> foo1(vec);
std::list<double> list;
Foo<double> foo2(list);
嗯?
答案 0 :(得分:3)
很难说出你想要实现的目标,但下面的简单模板应该可以解决这个问题:
template <typename T>
class Foo
{
Foo(std::vector<T> const& v)
{
// initialize from vector
}
Foo(std::list<T> const& l)
{
// initialize from list
}
};
...
std::vector<int> vec;
Foo<int> foo1(vec);
std::list<double> list;
Foo<double> foo2(list);
答案 1 :(得分:2)
我一点也不清楚你要求的是什么。我认为您可能需要将您的问题编辑为更具体,更完整。
在此之前,如果您执行此操作,您的程序将编译正常:
#include <vector>
#include <list>
template <typename T>
class Foo {
public:
template<typename T1>
Foo(T1 c) {
}
};
std::vector<int> vec;
Foo<int> foo1(vec);
std::list<double> list;
Foo<double> foo2(list);