title: std::regex undefined behavior
body: <p>Сould anyone please describe such behavior of std::regex library </p>
  
  <pre><code>string a{"ERROR"};
  regex r1{"errOR",0};
  cout&lt;&lt;regex_search(a,r1)&lt;&lt;endl;
  regex r2{"errOR"};
  cout&lt;&lt;regex_search(a,r2)&lt;&lt;endl;
  regex r3{"errOR",regex::ECMAScript};
  cout&lt;&lt;regex_search(a,r3)&lt;&lt;endl;
  
  cout&lt;&lt;r1.flags()&lt;&lt;endl;
  cout&lt;&lt;r2.flags()&lt;&lt;endl;
  cout&lt;&lt;r3.flags()&lt;&lt;endl;
  </code></pre>
  
  <p>gives output </p>
  
  <pre><code>1
  0
  0
  16
  16
  16
  </code></pre>
  
  <p>so 1st example became implicitly ignore casing with sum of flags corresponding to default construction of re i.e 16, 
  by the way in std::regex there is no constant that match 0 value,
  but there is regex::icase == 1;</p>
  
  <p>Is that conceived behavior of std library or I should not to feed to constructor values that explicitly not supported? </p>