Его возможно по этим самым габаритам отсортировать? Например, есть круг и прямоугольник. Если у круга диаметр больше, чем у прямоугольника высота, считаем, что круг больше прямоугольника.
Такое лучше через полиморфизм и наследование делать
Ну надо компаратор сделать, в котором будет visit по возможным вариантам
Можете подсказать, где почитать/посмотреть примеры? Никогда не работал с вариантами, как будет выглядеть компаратор, не могу представить даже примерно -_-
std::visit + std::overloaded
Прочитал, не понял.
Ну там есть примеры использования на cppref
std::visit([](auto&& arg) { using T = std::decay_t<decltype(arg)>; if constexpr (std::is_same_v<T, int>) std::cout << "int with value " << arg << '\n'; else if constexpr (std::is_same_v<T, long>) std::cout << "long with value " << arg << '\n'; else if constexpr (std::is_same_v<T, double>) std::cout << "double with value " << arg << '\n'; else if constexpr (std::is_same_v<T, std::string>) std::cout << "std::string with value " << std::quoted(arg) << '\n'; else static_assert(always_false_v<T>, "non-exhaustive visitor!"); }, w);
Это пример с cppref. я не понимаю, как на его основе написать компаратор, который будет сравнивать между собой два разных типа
Ну в зависимости от типа ты сохраняешь в переменную значение, по которому его сравнивать
Но лучше конечно через std::overloaded, читаемее будет
Но я согласен с Сергеем конечно
Ща, накидаю на вандбоксе, ибо на словах ничего не понятно %)
https://godbolt.org/z/bjnKhK тоже накидал
*О* Спасибо большое!
Обсуждают сегодня