Intervalo de caracteres UTF-8 em C ++ 11 Regex

Esta questão é uma extensão deAs expressões regulares do C ++ 11 funcionam com strings UTF-8?

#include <regex>  
if (std::regex_match ("中", std::regex("中") ))  // "\u4e2d" also works
  std::cout << "matched\n";

O programa é compilado no Mac Mountain Lion comclang++ com as seguintes opções:

clang++ -std=c++0x -stdlib=libc++

O código acima funciona. Este é um regex de intervalo padrão"[一-龠々〆ヵヶ]" para corresponder a qualquer Kanji japonês ou caractere chinês. Ele funciona em Javascript e Ruby, mas não consigo obter intervalos trabalhando em C ++ 11, mesmo com o uso de uma versão similar[\u4E00-\u9fa0]. O código abaixo não corresponde à string.

if (std::regex_match ("中", std::regex("[一-龠々〆ヵヶ]")))
  std::cout << "range matched\n";

Mudar localidade também não ajudou. Alguma ideia?

EDITAR

Então, descobri que todas as faixas funcionam se você adicionar+ até o fim. Nesse caso[一-龠々〆ヵヶ]+, mas se você adicionar{1} [一-龠々〆ヵヶ]{1} não funciona. Além disso, parece ultrapassar seus limites. Não combina com caracteres latinos, mas corresponderá qual é\u306f e qual é\u3041. Ambos estão abaixo\u4E00

nhahtdh também sugeriu regex_search que também funciona sem adicionar+ mas ainda corre o mesmo problema acima, puxando valores fora de seu alcance. Jogado com os locais um pouco também. Mark Ransom sugere que ele trate a string UTF-8 como um conjunto estúpido de bytes, acho que isso é possivelmente o que ela está fazendo.

Continuando a teoria de que o UTF-8 está se confundindo de alguma forma,[a-z]{1} e[a-z]+ fósforosa, se apenas[一-龠々〆ヵヶ]+ corresponde a qualquer um dos caracteres, não[一-龠々〆ヵヶ]{1}.

questionAnswers(1)

yourAnswerToTheQuestion