Replace boost::variant with std::variant throughout the OSD-related
codebase. This change reduces third-party dependencies by leveraging
the C++ standard library alternative.
Changes:
- common/inline_variant.h: Replace the existing match() helper with a
wrapper around std::visit. The previous implementation constructed a
visitor class from given functions; the new implementation provides
equivalent functionality using standard library primitives.
- osd/osd_types.h: Add templated operator<< overload for std::variant.
Since boost::variant provided a built-in operator<< that we relied on,
and std::variant does not include this functionality, we implement our
own formatter. To avoid ambiguous overload resolution (where types
implicitly convertible to variant alternatives could match both the
variant formatter and their native formatters), the template requires
at least one alternative type parameter.
This migration maintains existing functionality while eliminating the
boost::variant dependency.