/// \brief Insert a new element into the SetVector.
/// \returns true iff the element was inserted into the SetVector.
bool insert(const value_type &X) {
- bool result = set_.insert(X);
+ bool result = set_.insert(X).second;
if (result)
vector_.push_back(X);
return result;
template<typename It>
void insert(It Start, It End) {
for (; Start != End; ++Start)
- if (set_.insert(*Start))
+ if (set_.insert(*Start).second)
vector_.push_back(*Start);
}
set_type &set_;
public:
- typedef typename UnaryPredicate::argument_type argument_type;
-
TestAndEraseFromSet(UnaryPredicate P, set_type &set_) : P(P), set_(set_) {}
- bool operator()(argument_type Arg) {
+ template <typename ArgumentT>
+ bool operator()(const ArgumentT &Arg) {
if (P(Arg)) {
set_.erase(Arg);
return true;