#include <algorithm>
#include <iostream>
#include <iterator>
struct Foo {
bool vin;
bool bar[3];
bool baz[3];
};
template<typename T, std::size_t N>
std::size_t array_size(T(&)[N]) { return N; }
std::ostream &operator<<(std::ostream &out, Foo const &f) {
std::cout << f.vin << '\t';
std::copy(f.bar, f.bar + array_size(f.bar), std::ostream_iterator<bool>(out, "\t"));
std::copy(f.baz, f.baz + array_size(f.baz), std::ostream_iterator<bool>(out, "\t"));
return out;
}
int main() {
Foo baz = {true, true, false, true};
Foo zoo = {false, {true, false}, { true }};
std::cout << baz << '\n' << zoo << '\n';
}