Is it possible to create a template in C++(11) for a function to check whether an object is contained in either a std::vector
, std::array
or std::list
(and possibly even more container types)?
What I have by now:
typedef std::shared_ptr<Tag> SharedTag;
typedef std::vector<SharedTag> TagList;
bool
Tag::isIn(const TagList& lst) {
return std::any_of(lst.begin(), lst.end(), [this](const SharedTag& t) {
return t->name == this->name;
});
}
Tag
is a normal class
. The comparison, of course, should be done t == this
, which will be an operator==
later on. I did not include this here for simplicity.
So, is it possible to write the upper code only once (without the typedef's though,) for std::vector
, std::array
, std::list
(, maybe for std::set
) and so on?
I couldn't find a base-type of all these classes,... which would be my first idea...
Aucun commentaire:
Enregistrer un commentaire