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++&nbsp;com as seguintes opções:

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

O código acima funciona. Este é um regex de intervalo padrão"[一-龠々〆ヵヶ]"&nbsp;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+&nbsp;até o fim. Nesse caso[一-龠々〆ヵヶ]+, mas se você adicionar{1} [一-龠々〆ヵヶ]{1}&nbsp;não funciona. Além disso, parece ultrapassar seus limites. Não combina com caracteres latinos, mas corresponderá&nbsp;qual é\u306f&nbsp;e&nbsp;qual é\u3041. Ambos estão abaixo\u4E00

nhahtdh também sugeriu regex_search que também funciona sem adicionar+&nbsp;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}&nbsp;e[a-z]+&nbsp;fósforosa, se apenas[一-龠々〆ヵヶ]+&nbsp;corresponde a qualquer um dos caracteres, não[一-龠々〆ヵヶ]{1}.