次のようなc++例題がコンパイルできません。

#include <iostream>
#include <regex>

int main(int argc, char* argv[]){
  using namespace std;
  smatch sm;
  cout << regex_match(string("hahaha"), sm, regex("(ha){3}")) << endl;
  return 0;
}

Mac OS X 10.9 + clang++ またはwindows + cygwin + gcc 4.9 では上の例はちゃんとコンパイルされ、予測している結果の1を出力します。
しかし、linuxでgccを使ってコンパイルすると何故か次のように怒られます。

foo.cpp: In function ‘int main(int, char**)’:
foo.cpp:13:61: error: use of deleted function ‘bool std::regex_match(const std::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>&&, std::match_results<typename std::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>&, const std::basic_regex<_Ch_type, _Rx_traits>&, std::regex_constants::match_flag_type) [with _Ch_traits = std::char_traits<char>; _Ch_alloc = std::allocator<char>; _Alloc = std::allocator<std::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> > > >; _Ch_type = char; _Rx_traits = std::regex_traits<char>; typename std::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >]’
   cout << regex_match(string("hahaha"), sm, regex("(ha){3}")) << endl;
                                                             ^
In file included from /usr/include/c++/5.1.0/regex:61:0,
                 from foo.cpp:6:
/usr/include/c++/5.1.0/bits/regex.h:2073:5: note: declared here
     regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>&&,
     ^

コンパイル環境は Arch GNU/Linux で、gccヴァージョンは5.1です。

私が見る限りでは例のソース自体は問題がないように見えます。
ただ、ソースのsmをcmatchに変え、文字列をstringでなくc_strにすればコンパイルされますが、私はc_strよりstringが使いたいです。