This:
static __thread baz mybaz[10] = {nullptr};
is equivalent to:
static __thread baz mybaz[10] = {baz(nullptr), baz(), baz(), baz(), baz(), ..., baz()};
Because this is general rule that implicit initialization of an array element is by default constructor.
So either do this:
static __thread baz mybaz[10] = {nullptr, nullptr, nullptr, ..., nullptr};
Or make your default constructor also constexpr...