Мне совершенно не понятно, о чем вы просите. Я думаю, что вам, возможно, придется отредактировать свой вопрос, чтобы он был более конкретным и более полным.
До этого ваша программа будет прекрасно компилироваться, если вы сделаете следующее:
#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);