Was writing this code in Visual Studio 2015. Note the ‘auto’ specifier in the lambda parameter list.
template <typename Container, typename Entity> void Remove( Container& c, Entity e ) { auto Iter = std::remove_if( c.begin(), c.end(), [ e ]( const auto& Ent ){ return Ent == e; } ); c.erase( Iter, c.end() ); }
Ended up with this code to stay compatible with Visual Studio 2013.
template <typename Container, typename Entity> void Remove( Container& c, Entity e ) { auto Iter = std::remove_if( c.begin(), c.end(), [ e ]( const typename Container::value_type& Ent ) { return Ent == e; } ); c.erase( Iter, c.end() ); }