for(; (end!=str.end() && (end==iter || *end!=']')); ++end) ;
if(end==str.end())
throw bad_regex("unmatched '['", str, begin);
for(; (end!=str.end() && (end==iter || *end!=']')); ++end) ;
if(end==str.end())
throw bad_regex("unmatched '['", str, begin);