std::regex: Function-Local vs. Static-Local Declaration

Question 13 / 17 Correct so far: 0 (0 answered)

Snippet A

Regex Per Call

bool isEmail(const std::string& s) {
    std::regex re(EMAIL_PATTERN);
    return std::regex_match(s, re);
}

int count = 0;
for (const auto& s : TEST_STRINGS)
    if (isEmail(s)) ++count;
Snippet B

Regex Static

bool isEmail(const std::string& s) {
    static const std::regex re(EMAIL_PATTERN);
    return std::regex_match(s, re);
}

int count = 0;
for (const auto& s : TEST_STRINGS)
    if (isEmail(s)) ++count;
Shared test data (shared-setup)
static const std::vector<std::string> TEST_STRINGS = {
    "foo@example.com",
    "not-an-email",
    "bar@domain.org",
    "invalid",
    "user@test.net",
    "also-invalid",
    "name@company.io",
    "bad-string",
    "another@valid.com",
    "nope",
};

static const char* EMAIL_PATTERN =
    R"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})";

Which snippet is faster?

Select the correct answer(s)