Я пытаюсь понять поведение следующего кода.Результат std :: regex_match кажется неправильным
Я думаю, что это может быть ошибка, так как результат выглядит неправильно для меня.
#include <iostream>
#include <regex>
int main(int ac, char **av)
{
std::regex reg("lib(.*)\\.so");
std::smatch match;
std::cout << std::regex_match(std::string("libscio.so"), match, reg) << std::endl;
std::cout << match.str(1) << std::endl;
return 0;
}
Я ожидаю
1
scio
Но это дает мне
1
ocio
Собран с GCC версии 4.9.2 (Debian 4.9.2-10) на x86_64 GNU/Linux
Возможно, что-то связано с [этим] (http://stackoverflow.com/questions/33154890/simple-stdregex-search-code-wont-compile-with-apple-clang-std-c14)? – LogicStuff
Какую стандартную версию вы скомпилировали? Как отмечено в ссылке @ LogicStuff, которая отвечает на это, передача _rvalue_ была UB в C++ 11, и по этой причине теперь запрещено в C++ 14. –