template<class base>
class bsoncxx::v_noabi::builder::stream::array_context< base >
A stream context which expects any number of values. 
The template argument can be used to hold additional information about containing documents or arrays. I.e. value_context<> implies that this array is a sub_array in a document, while array_context would indicated a sub_array in an array. These types can be nested, such that contextual parsing (for key/value pairs) and depth (to prevent an invalid array_close) are enforced by the type system.
I.e. builder << array_context << array_context << ...;
This builds a bson array with successively higher index keys 
 | 
|   | array_context (core *core) | 
|   | Create an array_context given a core builder.  
  | 
|   | 
|   | operator array_context<> () | 
|   | Conversion operator which provides a rooted array context given any stream currently in a nested array_context.  
  | 
|   | 
|   | operator single_context () | 
|   | Conversion operator for single_context.  
  | 
|   | 
| array_context  | operator<< (concatenate_array array) | 
|   | << operator for concatenating another array.  
  | 
|   | 
| base  | operator<< (const close_array_type) | 
|   | << operator for closing a subarray in the core builder.  
  | 
|   | 
| array_context< array_context >  | operator<< (const open_array_type) | 
|   | << operator for opening a new subarray in the core builder.  
  | 
|   | 
| key_context< array_context >  | operator<< (const open_document_type) | 
|   | << operator for opening a new subdocument in the core builder.  
  | 
|   | 
| template<typename Func >  | 
| detail::requires_t< array_context &, detail::disjunction< detail::is_invocable< Func, array_context >, detail::is_invocable< Func, single_context > > >  | operator<< (Func &&func) | 
|   | << operator for accepting a callable of the form void(array_context) or void(single_context) and invoking it to perform 1 or more value appends to the core builder.  
  | 
|   | 
| template<typename T >  | 
| detail::requires_t< bsoncxx::v_noabi::array::value, std::is_same< base, closed_context >, detail::is_alike< T, finalize_type > >  | operator<< (T &&) | 
|   | << operator for finalizing the stream.  
  | 
|   | 
| template<class T >  | 
| detail::requires_not_t< array_context &, detail::is_invocable< T, array_context<> >, detail::is_invocable< T, single_context >, detail::is_alike< T, finalize_type > >  | operator<< (T &&t) | 
|   | << operator for accepting a real value and appending it to the core builder.  
  | 
|   |