Having seen a regex from one of my colleagues of <.*?> for stripping HTML tags, it didn't make sense to me to have zero-or-one occurrences (?) of zero-or-more characters (.*). Additionally, it appeared that it wouldn't work since.* is greedy so would strip out data between tags as well.
But on testing this in an online regex, it appeared my colleague was correct in his assertion that it makes it non-greedy so I decided to go and check why.
In any case, that's just the background. Looking at the C++11 standard, I finally found out that there were multiple possible regex engines that were allowed, as per 28.5.2 and table 128, and that:
A valid value of type
syntax_option_typeshall have exactly one of the elementsECMAScript,basic,extended,awk,grep,egrep, set.
However, that same section shows that the default used if not specified, match_default, is defined as zero, which clearly does not have one of the bits set.
Nowhere in the standard can I find where the default engine is specified so I'm wondering whether that's implementation defined or whether I've just missed it.