Rango de caracteres UTF-8 en C ++ 11 Regex

Esta pregunta es una extensión de¿Las expresiones regulares de C ++ 11 funcionan con cadenas UTF-8?

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

El programa está compilado en Mac Mountain Lion conclang++ con las siguientes opciones:

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

El código anterior funciona. Este es un regex de rango estándar."[一-龠々〆ヵヶ]" para emparejar cualquier kanji japonés o carácter chino. Funciona en Javascript y Ruby, pero parece que no consigo que los rangos funcionen en C ++ 11, incluso con una versión similar.[\u4E00-\u9fa0]. El siguiente código no coincide con la cadena.

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

Cambiar la configuración regional tampoco ha ayudado. ¿Algunas ideas?

EDITAR

Así que he encontrado que todos los rangos funcionan si agrega un+ hasta el final. En este caso[一-龠々〆ヵヶ]+, pero si añades{1} [一-龠々〆ヵヶ]{1} No funciona. Además, parece sobrepasar sus límites. No coincidirá con los caracteres latinos, pero sí coincidirá cual es\u306f y cual es\u3041. Ambos se encuentran debajo\u4E00

nhahtdh también sugirió regex_search que también funciona sin agregar+ pero sigue teniendo el mismo problema que el anterior al extraer valores fuera de su rango. Jugó con los locales un poco también. Mark Ransom sugiere que trata la cadena UTF-8 como un conjunto de bytes tontos, creo que esto es posiblemente lo que está haciendo.

Continuando con la teoría de que UTF-8 se está mezclando de alguna manera,[a-z]{1} y[a-z]+ partidosa, pero sólo[一-龠々〆ヵヶ]+ coincide con cualquiera de los personajes, no[一-龠々〆ヵヶ]{1}.

Respuestas a la pregunta(1)

Su respuesta a la pregunta