(root)/
gcc-13.2.0/
libstdc++-v3/
testsuite/
28_regex/
basic_regex/
ctors/
grammar.cc
// { dg-do run { target c++11 } }
#include <regex>
#include <testsuite_hooks.h>

void
test01()
{
  std::regex re{""};
  VERIFY( re.flags() & std::regex::ECMAScript );

  std::regex re2{"", std::regex::flag_type{}};
  VERIFY( re2.flags() == std::regex::flag_type() ); // See also PR 83598
}

void
test02()
{
  // A valid value of type syntax_option_type shall have at most one of the
  // grammar elements ECMAScript, basic, extended, awk, grep, egrep, set.

  try
  {
    std::regex{"", std::regex::ECMAScript|std::regex::basic};
    VERIFY( false );
  }
  catch (const std::regex_error&)
  {
  }

  try
  {
    std::regex{"", std::regex::extended|std::regex::basic};
    VERIFY( false );
  }
  catch (const std::regex_error&)
  {
  }

  try
  {
    std::regex{"", std::regex::grep|std::regex::basic};
    VERIFY( false );
  }
  catch (const std::regex_error&)
  {
  }
}

int main()
{
  test01();
  test02();
}