Uso de regex lookbehinds en C ++ 11

¿Por qué no puedo usar lookbehinds en C ++ 11? Lookahead funciona bien.

std::regex e("(?<=a)b"); 

Esto lanzará la siguiente excepción:

 The expression contained mismatched ( and ). 

Esto no arrojará ninguna excepción:

 std::regex e("a(?=b)"); 

¿Qué me estoy perdiendo?

C ++ 11 usa la syntax regex de ECMAScript (ECMA-262), por lo que no tendrá look-behind (otros sabores de regex que admite C ++ 11 tampoco tienen look-behind).

Si su caso de uso requiere el uso de look-behind, puede considerar el uso de Boost.Regex en su lugar.