Parâmetros de modelo e modelos variados com o gcc 4.4

Estou usando o gcc 4.4 no Debian squeeze. Considere o seguinte código.

#include <map>
#include <string>
using std::map;
using std::string;

// Args lets the user specify additional explicit template arguments
template <typename T,
      template <typename T, typename... Args> class C,
      typename... Args>
C<T, Args...> foo()
{
  C<T, Args...> x;
  return x;
}

int main(void)
{
  map<string, int> a = foo<string, map, int>();
}

Então, a idéia aqui é queT partidasstring, C partidasmap e o pacote de parâmetros do modeloArgs partidasint. Eu posso ter algumas sintaxes incorretas, por favor, corrija se sim. Em particular, se alguém quiser o primeiro argumento do modelo emclass C para combinarT e o restante para corresponder ao pacote de parâmetros do modeloArgs, étemplate <typename T, typename... Args> class C a sintaxe correta?

Isso dá o erro

In function 'int main()':
post.cc:18: error: no matching function for call to 'foo()'

Este parece ser semelhante à pergunta Modelos de modelos variados e encaminhamento perfeito. Essa pergunta sugere que esse é um bug do gcc, mas talvez eu esteja errado ao pensar que essas perguntas são sobre a mesma cois

Por favor, seja gentil. Meu conhecimento de modelos variados tem menos de 12 horas; Eu estava apenas tentando reescrever algum código C ++ antigo para reduzir a duplicação. Também já faz um tempo desde que eu fiz qualquer C ++. Se houver uma solução alternativa, entre em contato. Obrigado

EDIT: a solução sugerida nos comentários de Modelos de modelos variados e encaminhamento perfeito porIse Wisteria trabalhou para mim, o que sugere que este é o mesmo bug. Claro, agora estou (a) imaginando quão frágil é essa solução alternativa e (b) por que ela funciona e o que motivou Ise a pensar nela. Embora eu ache que apenas Ise possa responder a última parte. : -)

questionAnswers(2)

yourAnswerToTheQuestion