std::regex_search の第1引数に 一時的な string を入れるとよくない

match_results オブジェクトを引数に取る形式の場合、そのオブジェクトは引数で指定した検索対象文字列へのイテレータを保持する。 このため、検索対象文字列は本関数を呼び出した後も match_results オブジェクトを使用し終わるまで破棄されないようにする必要がある。 従って、(3) の形式に渡す引数 s に一時オブジェクトを指定することはほぼ間違いなくプログラミング上のエラーを意味する。 (4) の形式が deleted として C++14 で追加された理由は、このような事態をコンパイル時に検出するためである。

regex_search - cpprefjp C++日本語リファレンス