I tak będziesz szukał - co najwyżej przeniesiesz sprawdzenie, czy wartość już występuje "pod maskę". Jeśli chcesz zmienić domyślną wartość to niestety musisz użyć innego niż int
typu, który go opakuje i domyślnie nada inną wartość. Trzeba by to przetestować, ale takie rozwiązanie może negatywnie wpłynąć na wydajność.
template<typename T, T def>
struct DefaultInteger
{
DefaultInteger() : val(def) {}
DefaultInteger(T val) : val(val) {}
DefaultInteger& operator=(T n) { val = n; return *this; }
operator T() const { return val; }
T val;
};
Działać działa - http://ideone.com/OtxVIw - ale ja bym porównał wynik metody find
z end
i tyle.