Explosão de pilha de regex C ++ 11 / VS2012

Eu estou no processo de converter algum código regex Boost mais antigo para C ++ 11, e me deparei com um problema com um dos meus casos de teste. Aqui está um cenário que faz com que uma exceção de estouro de pilha usando std :: regex, mas funcionou bem com boost :: regex. Eu não mudei o padrão de expressão regular, e verifiquei o padrão é o que eu quero. Parece que esse fragmento de entrada de string específico está causando o estouro de pilha. Usando o VS2012, x64 compilação de depuração:

std::regex regx( "(^|\\})(([^\\{:])+:)+([^\\{]*\\{)" );

    const std::string testinput = " COLOR: #000; BACKGROUND-COLOR: #FFF; FONT-FAMILY: VERDANA, ARIAL, HELVETICA, SANS-SERIF; BACKGROUND:URL(URL(___FOO___)); BACKGROUND-2:URL(URL(___FOO___)); BORDER: 0 0 0 0; BORDER-2: 0 0 0; BORDER-3: 0 0; BORDER-4: 0PX; BORDER-5: 0.6; FILTER:PROGID:DXIMAGETRANSFORM.MICROSOFT.ALPHA(OPACITY=100); } ";
    std::smatch what;
    // this next line causes a stack overflow
    std::regex_search( testinput.cbegin(), testinput.cend(), what, regx );  

Olhando para a pilha de chamadas após a exceção, parece haver algum tipo de recursão infinita acontecendo na implementação regex. Atualmente, não tenho o GCC para testar isso. O que estou fazendo de errado?

Atualização: Após as sugestões abaixo, colei este código em um aplicativo de console, VS 2012 x64 debug e recebo o estouro de pilha. Se eu alterá-lo para x64 release, ou Win32 depurar ou liberar corre bem. Hã??? Preciso reinstalar o VS e / ou o SDK da plataforma? Estou no Win7 x64.

Atualização # 2: postagem relacionada:Por que o std :: regex_iterator causa um estouro de pilha com esses dados? Eu suponho que se eu reescrever meu regex, isso pode ajudar. Eu ainda não tenho certeza porque a mordida é importante. E porque funciona para os outros, mas não para mim no meu sistema. Suspiro.

questionAnswers(1)

yourAnswerToTheQuestion