2016-09-13 10 views
1

これは簡単で無害であるように見えますが、f(m)への呼び出しでは、「失敗した置換」のページで失敗します。何故ですか?smatch :: strでmem_fnをコンパイルできないのはなぜですか?

string const input = "The quick brown fox."; 
std::regex const words("[^\\s]+"); 

auto f = std::mem_fn(&std::smatch::str); 
std::sregex_iterator i = std::sregex_iterator(input.begin(), input.end(), words); 
std::smatch m = *i; 

string first_word = f(m); 

http://ideone.com/nsN8A1

答えて

4

str takes an argumentので。通常はデフォルトで0になりますが、mem_fnはデフォルトの引数値を持たないため、明示的に指定する必要があります。

string first_word = f(m, 0); 

http://ideone.com/nfuTFX

関連する問題