#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main() {
regex r(R"(foo\s*\([\w, ]*\)\s*\{)");
string s("int foo () {\n // Some statement\n}\nint foo(int a, int b){}\nint foo ()\n{\n}");
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
std::cout << m.str() << '\n';
}
return 0;
}
I2luY2x1ZGUgPHJlZ2V4PgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXJlZ2V4IHIoUiIoZm9vXHMqXChbXHcsIF0qXClccypceykiKTsKCXN0cmluZyBzKCJpbnQgZm9vICgpIHtcbiAgICAvLyBTb21lIHN0YXRlbWVudFxufVxuaW50IGZvbyhpbnQgYSwgaW50IGIpe31cbmludCBmb28gKClcbntcbn0iKTsKCWZvcihzdGQ6OnNyZWdleF9pdGVyYXRvciBpID0gc3RkOjpzcmVnZXhfaXRlcmF0b3Iocy5iZWdpbigpLCBzLmVuZCgpLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpKQoJewoJICAgIHN0ZDo6c21hdGNoIG0gPSAqaTsKCSAgICBzdGQ6OmNvdXQgPDwgIG0uc3RyKCkgPDwgJ1xuJzsKCX0KICAgIHJldHVybiAwOwp9