Dlaczego nie mogę usunąć łańcucha ze std :: set za pomocą std :: remove_if? [duplikować]

Możliwy duplikat:
remove_if odpowiednik dla std :: map

Mam zestaw ciągów:

set <wstring> strings;
// ...

Chcę usunąć ciągi zgodnie z predykatem, np .:

std::remove_if ( strings.begin(), strings.end(), []( const wstring &s ) -> bool { return s == L"matching"; });

Gdy próbuję tego dokonać, otrzymuję następujący błąd kompilatora:

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm(1840): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::basic_string<_Elem,_Traits,_Ax>' 

Błąd wydaje się to sugerowaćstd::string nie ma konstruktora kopiowania wartościowego (co byłoby nielegalne). Czy to w jakiś sposób złestd::remove_if zstd::set ? Czy powinienem robić coś innego, na przykład kilka iteracjiset::find() śledzony przezset::erase() ?

questionAnswers(2)

yourAnswerToTheQuestion