// WARNING: This file is machine generated by fidlgen.

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.vectors/cpp/natural_types.h>
#include <lib/fidl/cpp/natural_ostream.h>

#include <iostream>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

template <>
struct fidl::ostream::Formatter<::test_vectors::ExampleUseOfVectors> {
  static std::ostream& Format(std::ostream& os, const ::test_vectors::ExampleUseOfVectors& value);
};

namespace test_vectors {

std::ostream& operator<<(std::ostream& os, const ::test_vectors::ExampleUseOfVectors& value);

}  // namespace test_vectors

#ifdef __Fuchsia__

#endif  // __Fuchsia__

#pragma clang diagnostic pop
