Por que não posso remover uma string de um std :: set com std :: remove_if? [duplicado]

Duplicata Possível:
remove_if equivalente para std :: map

Eu tenho um conjunto de seqüências de caracteres:

set <wstring> strings;
// ...

Desejo remover strings de acordo com um predicado, por exemplo:

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

Quando eu tento isso, recebo o seguinte erro do compilador:

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>' 

O erro parece sugerir questd::string não tem um construtor de cópia por valor (o que seria ilegal). É de alguma forma ruim de usarstd::remove_if comstd::set ? Eu deveria estar fazendo outra coisa em vez disso, como várias iterações deset::find() Seguido porset::erase() ?

questionAnswers(2)

yourAnswerToTheQuestion