У меня есть два разных объекта:
struct TypeA {
std::size_t no;
std::string data;
std::string data2;
};
struct TypeB {
std::size_t no;
std::string data;
std::string data2;
std::string data3;
};
Они хранятся в std::vector
с std::variant
std::vector<std::variant< TypeA, TypeB>> ab;
Теперь я хочу удалить все элементы, которые были членом no = 0
.
Без std::variant
с вектором, содержащим только TypeA
Я бы сделал это так:
ab.erase(std::remove_if(ab.begin(), ab.end(),
[](const TypeA& a) { return a.no == 0; }), ab.end());
Но как включить std::variant
?Я пытался придумать что-то с std::visit
, но я не могу объявить это в предикате std::remove_if
или я могу?