/// $ g++ -std=c++11 *.cc && ./a.out
#include <locale>
#include <regex>
namespace {
// From http://stackoverflow.com/questions/11254232/do-c11-regular-expressions-work-with-utf-8-strings
bool test_unicode()
{
std::locale old;
std::locale::global(std::locale("en_US.UTF-8"));
std::regex pattern("[[:alpha:]]+", std::regex_constants::extended);
bool result = std::regex_match(std::string("abcdéfg"), pattern);
std::locale::global(old);
return result;
}
bool test_unicode2()
{
std::locale old;
std::locale::global(std::locale("en_US.UTF-8"));
std::regex pattern("[[:alpha:]]+", std::regex_constants::extended);
bool result = std::regex_match(std::string("abcd\xC3\xA9""fg"), pattern);
std::locale::global(old);
return result;
}
}
int main()
{
return !(test_unicode() or test_unicode2()); // return 0 if *any* of
// the tests succeed
}
Ly8vICQgZysrIC1zdGQ9YysrMTEgKi5jYyAmJiAuL2Eub3V0CgojaW5jbHVkZSA8bG9jYWxlPgojaW5jbHVkZSA8cmVnZXg+CgpuYW1lc3BhY2UgewogIC8vIEZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMTI1NDIzMi9kby1jMTEtcmVndWxhci1leHByZXNzaW9ucy13b3JrLXdpdGgtdXRmLTgtc3RyaW5ncwoKICBib29sIHRlc3RfdW5pY29kZSgpCiAgewogICAgc3RkOjpsb2NhbGUgb2xkOwogICAgc3RkOjpsb2NhbGU6Omdsb2JhbChzdGQ6OmxvY2FsZSgiZW5fVVMuVVRGLTgiKSk7CgogICAgc3RkOjpyZWdleCBwYXR0ZXJuKCJbWzphbHBoYTpdXSsiLCBzdGQ6OnJlZ2V4X2NvbnN0YW50czo6ZXh0ZW5kZWQpOwogICAgYm9vbCByZXN1bHQgPSBzdGQ6OnJlZ2V4X21hdGNoKHN0ZDo6c3RyaW5nKCJhYmNkw6lmZyIpLCBwYXR0ZXJuKTsKCiAgICBzdGQ6OmxvY2FsZTo6Z2xvYmFsKG9sZCk7CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGJvb2wgdGVzdF91bmljb2RlMigpCiAgewogICAgc3RkOjpsb2NhbGUgb2xkOwogICAgc3RkOjpsb2NhbGU6Omdsb2JhbChzdGQ6OmxvY2FsZSgiZW5fVVMuVVRGLTgiKSk7CgogICAgc3RkOjpyZWdleCBwYXR0ZXJuKCJbWzphbHBoYTpdXSsiLCBzdGQ6OnJlZ2V4X2NvbnN0YW50czo6ZXh0ZW5kZWQpOwogICAgYm9vbCByZXN1bHQgPSBzdGQ6OnJlZ2V4X21hdGNoKHN0ZDo6c3RyaW5nKCJhYmNkXHhDM1x4QTkiImZnIiksIHBhdHRlcm4pOwoKICAgIHN0ZDo6bG9jYWxlOjpnbG9iYWwob2xkKTsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfQoKCmludCBtYWluKCkKewogIHJldHVybiAhKHRlc3RfdW5pY29kZSgpIG9yIHRlc3RfdW5pY29kZTIoKSk7IC8vIHJldHVybiAwIGlmICphbnkqIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3RzIHN1Y2NlZWQKfQo=