c++のテンプレートで

template<class T>
void print(T &&iterable)
{
for(auto && str : iterable)
  std::cout << str << std::endl;
}

のような関数テンプレートを作ってテンプレートクラスTにはstd::stringを要素に持ったstd::vectorやstd::dequeなどのようなcontainerクラスだけを受け取るようにしたいのですがどのように書けばよいでしょうか?

template<class T>
void print(T<std::string> &&iterable)
{
for(auto && str : iterable)
  std::cout << str << std::endl;
}
std::vector<std::string>a({"1","2","3"});
print<std::vector>(a);

のように書いたらコンパイルエラーで通りませんでした。