Sha256: 45d903d039754b4faad3e80212e54f8b21184cb63356ea88d197605620c834de

Contents?: true

Size: 912 Bytes

Versions: 14

Compression:

Stored size: 912 Bytes

Contents

#ifndef MAPBOX_UTIL_VARIANT_IO_HPP
#define MAPBOX_UTIL_VARIANT_IO_HPP

#include <iosfwd>

#include <mapbox/variant.hpp>

namespace mapbox {
namespace util {

namespace detail {
// operator<< helper
template <typename Out>
class printer
{
public:
    explicit printer(Out& out)
        : out_(out) {}
    printer& operator=(printer const&) = delete;

    // visitor
    template <typename T>
    void operator()(T const& operand) const
    {
        out_ << operand;
    }

private:
    Out& out_;
};
}

// operator<<
template <typename CharT, typename Traits, typename... Types>
VARIANT_INLINE std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& out, variant<Types...> const& rhs)
{
    detail::printer<std::basic_ostream<CharT, Traits>> visitor(out);
    apply_visitor(visitor, rhs);
    return out;
}
} // namespace util
} // namespace mapbox

#endif // MAPBOX_UTIL_VARIANT_IO_HPP

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
tomoto-0.5.1 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.5.0 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.4.1 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.4.0 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.3.3 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.3.2 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.3.1 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.3.0 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.2.3 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.2.2 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.2.1 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.2.0 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.1.4 vendor/variant/include/mapbox/variant_io.hpp
tomoto-0.1.3 vendor/variant/include/mapbox/variant_io.hpp